source: trunk/guitools/evfsgui/evfsgui.vrx@ 1008

Last change on this file since 1008 was 990, checked in by Herwig Bauernfeind, 9 years ago

GUITools: All changes that have built over time.

File size: 215.7 KB
Line 
1/*:VRX Main
2*/
3/* Main
4*/
5Main:
6/*
7 Samba Connections GUI for OS/2 based systems
8 Copyright (C) 2007-2016 by Alexander Taylor and Herwig Bauernfeind
9 Derived works must contain this copyright notice.
10
11 This program is free software: you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation, either version 3 of the License, or
14 (at your option) any later version.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program. If not, see <http://www.gnu.org/licenses/>.
23*/
24/* Process the arguments.
25 Get the parent window.
26*/
27 parse source . calledAs .
28 parent = ""
29 argCount = arg()
30 argOff = 0
31 if( calledAs \= "COMMAND" )then do
32 if argCount >= 1 then do
33 parent = arg(1)
34 argCount = argCount - 1
35 argOff = 1
36 end
37 end; else do
38 call VROptions 'ImplicitNames'
39 call VROptions 'NoEchoQuit'
40 end
41 InitArgs.0 = argCount
42 if( argCount > 0 )then do i = 1 to argCount
43 InitArgs.i = arg( i + argOff )
44 end
45 drop calledAs argCount argOff
46
47/* Load the windows
48*/
49 call VRInit
50 parse source . . spec
51 _VREPrimaryWindowPath = ,
52 VRParseFileName( spec, "dpn" ) || ".VRW"
53 _VREPrimaryWindow = ,
54 VRLoad( parent, _VREPrimaryWindowPath )
55 drop parent spec
56 if( _VREPrimaryWindow == "" )then do
57 call VRMessage "", "Cannot load window:" VRError(), ,
58 "Error!"
59 _VREReturnValue = 32000
60 signal _VRELeaveMain
61 end
62
63/* Process events
64*/
65 call Init
66 signal on halt
67 do while( \ VRGet( _VREPrimaryWindow, "Shutdown" ) )
68 _VREEvent = VREvent()
69 interpret _VREEvent
70 end
71_VREHalt:
72 _VREReturnValue = Fini()
73 call VRDestroy _VREPrimaryWindow
74_VRELeaveMain:
75 call VRFini
76exit _VREReturnValue
77
78VRLoadSecondary:
79 __vrlsWait = abbrev( 'WAIT', translate(arg(2)), 1 )
80 if __vrlsWait then do
81 call VRFlush
82 end
83 __vrlsHWnd = VRLoad( VRWindow(), VRWindowPath(), arg(1) )
84 if __vrlsHWnd = '' then signal __vrlsDone
85 if __vrlsWait \= 1 then signal __vrlsDone
86 call VRSet __vrlsHWnd, 'WindowMode', 'Modal'
87 __vrlsTmp = __vrlsWindows.0
88 if( DataType(__vrlsTmp) \= 'NUM' ) then do
89 __vrlsTmp = 1
90 end
91 else do
92 __vrlsTmp = __vrlsTmp + 1
93 end
94 __vrlsWindows.__vrlsTmp = VRWindow( __vrlsHWnd )
95 __vrlsWindows.0 = __vrlsTmp
96 do while( VRIsValidObject( VRWindow() ) = 1 )
97 __vrlsEvent = VREvent()
98 interpret __vrlsEvent
99 end
100 __vrlsTmp = __vrlsWindows.0
101 __vrlsWindows.0 = __vrlsTmp - 1
102 call VRWindow __vrlsWindows.__vrlsTmp
103 __vrlsHWnd = ''
104__vrlsDone:
105return __vrlsHWnd
106
107/*:VRX __VXREXX____APPENDS__
108*/
109__VXREXX____APPENDS__:
110/*
111#append ..\shared\cltinit.vrs
112#append ..\shared\inittempdir.vrs
113#append ..\shared\nlv.vrs
114#append ..\shared\rexx_md5.vrs
115#append ..\shared\smbtree.vrs
116#append ..\shared\textini.vrs
117#append ..\shared\usercredmem.vrs
118#append ..\shared\rxrpclib.vrs
119*/
120return
121/*:VRX _AboutSambaClientGetInfo
122*/
123_AboutSambaClientGetInfo:
124 call VRSet "SW_ABOUT", "Painting", 0
125 BR = ''
126
127 ok = VRMethod( "CN_About", "RemoveRecord", "All" )
128
129 /* OS Version */
130 if VRFileExists(SysBootDrive()||"\SYS\ARCANOAE.FLG" ) then do
131 OS = linein(SysBootDrive()||"\SYS\ARCANOAE.FLG")
132 OS = subword(OS,1,2) '('translate(word(OS,3))')'
133 ok = stream(SysBootDrive()||"\SYS\ARCANOAE.FLG",'c','close')
134 end
135 else if VRFileExists(SysBootDrive()||"\ECS\ECS_INST.FLG" ) then do
136 OS = linein(SysBootDrive()||"\ECS\ECS_INST.FLG")
137 OS = subword(OS,1,3)
138 ok = stream(SysBootDrive()||"\ECS\ECS_INST.FLG",'c','close')
139 end
140 else OS = "OS/2 Warp/eComStation 1.x"
141
142 DummyRH = VRMethod('CN_About', 'AddRecord')
143 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Operating system", About.ValFH, OS)
144
145 /* Filesystem version */
146 DummyRH = VRMethod('CN_About', 'AddRecord')
147 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "File system", About.ValFH, fs.!name' Version 'fs.!version)
148 ABoutStr = "Samba Client Versions:"||BR
149 AboutStr = AboutStr||'0D0A'x||"File system "||'09'x||fs.!name' Version 'fs.!version||BR
150 plugindll. =""
151
152 /* Plugin */
153 address cmd 'look4dll.exe ndpsmb.dll >'samba.!msg
154 if RC <> 0 then do
155 /* Look4DLL not installed or failed, try fallback search */
156 if rc == 1041 then do /* look4dll not found, use REXX-based search */
157 pluginpath = _DLLSearch('ndpsmb.dll')
158 if pluginpath <> '' then do
159 plugindll.0 = 1
160 plugindll.1 = pluginpath
161 end
162 end
163 else plugindll.0 = 0
164 /* DLL is not in libpath; as a last resort, check some well-known places */
165 if plugindll.0 < 1 then do
166 NDFSDir = value("NDFSDIR",,"OS2ENVIRONMENT")
167 if NDFSDir = "" then do
168 OSDir = value("OSDIR",,"OS2ENVIRONMENT")
169 if OSDir == '' then OSDir = SysBootDrive()'\os2'
170 NDFSDir = OSDir'\dll'
171 end
172 ok = SysFileTree(NDFSDir'\ndpsmb.dll', "plugindll.", 'FOS')
173 end
174 end
175 else do
176 pluginline = linein(samba.!msg)
177 ok = stream(samba.!msg,'c','close')
178 ok = SysFileDelete(samba.!msg)
179 parse var pluginline . 'loaded ' pluginline
180 NDFSDir = VRParseFileName(pluginline,"DP")
181 plugindll.0 = 1
182 plugindll.1 = pluginline
183 end
184
185 if plugindll.0 > 0 then do
186 do J = 1 to plugindll.0
187 DummyRH.1 = VRMethod('CN_About', 'AddRecord')
188 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH.1, About.DscFH, "Plugin file", About.ValFH, plugindll.J)
189 AboutStr = AboutStr||'0D0A'x||"Plugin file "||'09'x||plugindll.J||BR
190
191 address cmd 'bldlevel.exe 'plugindll.J' >'samba.!msg
192
193 I = 0
194 Dummy = linein(samba.!msg)
195 say Dummy
196 Dummy = linein(samba.!msg)
197 say Dummy
198 Dummy = linein(samba.!msg)
199 say Dummy
200 do until lines(samba.!msg) = 0
201 I = I + 1
202 line.I = linein(samba.!msg)
203 if pos('has no LAN component-style version string', line.I) > 0 then do
204 DummyRH = VRMethod('CN_About', 'AddRecord')
205 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Error", About.ValFH, "Plugin has no LAN component-style version string")
206 leave
207 end
208 else do
209 parse var line.I desc':'vers
210 DummyRH = VRMethod('CN_About', 'AddRecord')
211 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Plugin "Desc, About.ValFH, strip(Vers))
212 AboutStr = AboutStr||'0D0A'x||"Plugin "Desc '09'x||strip(Vers)||BR
213 end
214 end
215 line.0 = I
216 ok = stream(samba.!msg,'c','close')
217 ok = SysFileDelete(samba.!msg)
218 end
219 end
220 else do
221 DummyRH = VRMethod('CN_About', 'AddRecord')
222 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Plugin", About.ValFH, "Not found!")
223 AboutStr = AboutStr||'0D0A'x||"Plugin not found!"||BR
224 end
225
226 /* Commandline utilities */
227 address cmd samba.!smbclientexe' -V >'samba.!msg
228 ClutVer = linein(samba.!msg)
229 ok = stream(samba.!msg,'c','close')
230 ok = SysFileDelete(samba.!msg)
231
232 DummyRH = VRMethod('CN_About', 'AddRecord')
233 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Commandline utility path", About.ValFH, VRParseFileName(samba.!smbclientexe,"DP"))
234
235 DummyRH = VRMethod('CN_About', 'AddRecord')
236 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "Commandline utilities", About.ValFH, ClutVer)
237 AboutStr = AboutStr||'0D0A'x||"Commandline utilities "||'09'x||ClutVer||BR
238
239 /* GUI Version */
240 DummyRH = VRMethod('CN_About', 'AddRecord')
241 ok = VRMethod("CN_ABOUT", "SetFieldData", DummyRH, About.DscFH, "EVFSGUI", About.ValFH, VRGet("Main", "HintText"))
242 AboutStr = AboutStr||'0D0A'x||"EVFSGUI "||'09'x || VRGet("Main", "HintText")||BR
243 call VRSet "SW_ABOUT", "Painting", 1
244return
245
246/*:VRX _AddTemplates
247*/
248_AddTemplates:
249 VolTplRH = VRMethod("CN_CURRENT", 'AddRecord', , 'First', 'Volume template', icons.!template )
250 MpTplRH = VRMethod("CN_CURRENT", 'AddRecord', VolTplRH, 'First', 'Mountpoint template', icons.!template )
251return
252
253/*:VRX _BrowseBuildPath
254*/
255_BrowseBuildPath: procedure expose options. icons. samba. sharerh
256 if options.!debug == 1 then say time()' _BrowseBuildPath started'
257 rh = arg(1)
258
259 finished = 0
260 BrowsePathStr = ''
261
262 do while \finished
263 parentrh = VRMethod("CN_SMBTREE","GetRecordAttr",rh,"Parent")
264 resname = VRMethod("CN_SMBTREE","GetRecordAttr",rh,"caption")
265 userdata = VRMethod("CN_SMBTREE","GetRecordAttr",rh,"userdata")
266 parse var userdata udatatype '|' udatamsg
267 parse var resname resname '0D0A'x .
268 resname = strip(resname)
269 /* say " Not connected - cannot open!" */
270 select
271 when udatatype = "SERVER" then do
272 BrowsePathStr = '\\'resname'\'BrowsePathStr
273 finished = 1
274 end
275 when udatatype = "DISK" then do
276 BrowsePathStr = resname'\'BrowsePathStr
277 sharerh =rh
278 rh = parentrh
279 end
280 otherwise do
281 BrowsePathStr = resname'\'BrowsePathStr
282 rh = parentrh
283 end
284 end
285 /* say ' BrowsePathStr = "'BrowsePathStr'"' */
286 end
287 BrowsePathStr = strip(BrowsePathStr,'T','\')
288 if options.!debug == 1 then say time()' _BrowseBuildPath done, returning "'BrowsePathStr'"'
289return BrowsePathStr
290
291/*:VRX _BrowseDirectory
292*/
293_BrowseDirectory: /* This must not be a procedure */
294 if options.!debug == 1 then say time()' _BrowseDirectory started'
295
296 /* Turn off painting */
297 ok = VRSet("CN_SMBTREE","Painting", 0 )
298 call VRSet VRWindow(), 'Pointer', 'Wait'
299
300 /* Make sure credentials are usable */
301 if UserCred = 'USERCRED' | UserCred = '' | UserCred = '--user=%' then UserCred = '-N'
302
303 /* We have to remove the double % for smbclient.exe - not entirely clear why */
304 OldUserCred = ""
305 if pos('%%',UserCred) > 0 & pos("4OS2", value("COMSPEC",,"OS2ENVIRONMENT")) = 0 then do
306 OldUserCred = UserCred
307 parse var UserCred '--user='username'%%'password
308 UserCred = '--user='username'%'password
309 say " Strip double %%!!!"
310 end
311
312 say ' 'samba.!smbclientexe' \\'machine'\'sharename' 'UserCred' --command="dir 'browsepath'"'
313 address cmd samba.!smbclientexe' \\'machine'\'sharename' 'UserCred' --command="dir 'browsepath'" 'debuglevel' 2>NUL 1>'samba.!msg
314
315 if UserCred = '-N' then UserCred = ''
316
317 if OldUserCred <> "" then do
318 UserCred = OldUserCred
319 OldUserCred = ""
320 say " Restore double %%!!!"
321 end
322
323 I = 0
324 ok = VRSet("DT_STATUSBAR","Caption", "")
325 do until lines(samba.!msg) = 0
326 infoline = linein(samba.!msg)
327 select
328 when pos('blocks',infoline) > 0 then do /* Last line */
329 /* we should handle size information here */
330 iterate
331 end
332 when I = 0 & length(infoline) > 0 & left(infoline,2) <> " " then do /* Login message */
333 say ' Login message "'Infoline'"'
334 ok = VRMethod("CN_SMBTREE", "SetRecordAttr", SMBObj.rh, "Userdata", SMBObj.udatatype'|'infoline )
335 ok = VRSet("DT_STATUSBAR","Caption", infoline)
336 end
337 when left(infoline,2) = " " & length(infoline) > 0 then do /* file or DIR */
338 wn = words(infoline)
339 fyear = word(infoline,wn)
340 ftime = word(infoline,wn-1)
341 fday = word(infoline,wn-2)
342 fmonth = word(infoline,wn-3)
343 fwday = word(infoline,wn-4)
344 pos_attr = pos(fwday,infoline)-16
345 fsize = word(infoline,wn-5)
346 fattr = substr(infoline,pos_attr,6)
347 fname = strip( substr(infoline,3,pos_attr-3))
348 if fname = '.' | fname = '..' then iterate /* we do not display these */
349 if pos('H',fattr) > 0 then iterate /* we do not display hidden files */
350 if pos('S',fattr) > 0 then iterate /* we do not display system files */
351 I = I + 1
352 fh.I = VRMethod( "CN_SMBTREE", "AddRecord", SMBObj.rh, , fname)
353 if pos('D',fattr) = 0 then do
354 Ext = translate(VRParseFIleName(fname,'E'))
355 select
356 when Ext = 'EXE' then ficon = icons.!exe /* executable */
357 when Ext = 'CMD' then ficon = icons.!cmd /* OS/2 or NT batch */
358 when Ext = 'BAT' then ficon = icons.!bat /* DOS batch */
359 when Ext = 'PDF' then ficon = icons.!pdf /* PDF document */
360 when wordpos(Ext, 'XLS SXC ODS') > 0 then ficon = icons.!spreadsheet
361 when wordpos(Ext, 'DOC SXW ODT') > 0 then ficon = icons.!textdocument
362 when wordpos(Ext, 'FW2 FW3 FW4') > 0 then ficon = icons.!framework
363 when wordpos(Ext, 'JPG BMP PNG GIF TIF') > 0 then ficon = icons.!image
364 when wordpos(Ext, 'AVI MPG FLV WMV') > 0 then ficon = icons.!movie
365 when wordpos(Ext, 'WAV MP3 OGG MID') > 0 then ficon = icons.!sound
366 when wordpos(Ext, 'WPI') > 0 then ficon = icons.!warpin
367 when wordpos(Ext, 'ZIP') > 0 then ficon = icons.!zip
368 when wordpos(Ext, 'INF HLP') > 0 then ficon = icons.!view
369 when wordpos(Ext, 'TXT') > 0 then ficon = icons.!plaintext
370 otherwise ficon = icons.!defaultfile /* default file icon */
371 end
372 ftype = 'FILE'
373 end
374 else do
375 ficon = icons.!folder
376 ftype = 'DIRECTORY'
377 end
378
379 ok = VRmethod("CN_SMBTREE", "SetRecordAttr", fh.I, "userdata", ftype'|'fsize' Bytes 'fday'-'fmonth'-'fyear' 'ftime,'icon',Ficon)
380
381 end
382 otherwise nop /* no other line type */
383 end
384 end
385 if I > 0 then ok = VRMethod("CN_SMBTREE","SetRecordAttr",SMBObj.rh, "Icon", icons.!folder_open)
386 ok = stream(samba.!msg,'c','close')
387 ok = SysFileDelete(samba.!msg)
388
389 ok = VRMethod( "CN_SMBTREE", "SetRecordAttr", SMBObj.rh,"Collapsed", 0)
390 /* Turn on painting */
391 call VRSet VRWindow(), 'Pointer', '<default>'
392 ok = VRSet("CN_SMBTREE","Painting", 1 )
393 if options.!debug == 1 then say time()' _BrowseDirectory done'
394return
395
396/*:VRX _BrowseObjectOpen
397*/
398_BrowseObjectOpen: procedure expose samba. options. cd. icons.
399 machine = arg(1)
400 sharename = arg(2)
401 browsepath = arg(3)
402
403 CALL VRMethod "CN_CONDET", 'GetRecordList', 'All', 'records.'
404
405 OpenOk = 0
406
407 DO i = 1 TO records.0
408 if VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.StatusFH) = icons.!active then do
409 if options.!debug == 1 then say ' 'VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.StatusFH)' 'VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.MPointFH)' 'VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.ServerFH)' 'VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.ShareFH)
410 if machine = VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.ServerFH) &,
411 sharename = VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.ShareFH) then do
412 Object = strip(VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.MPointFH),'T','\')'\'browsepath
413 if options.!debug == 1 then say ' Non UNC object: "'Object'"'
414 ID = VRMethod( "Application", "StartThread", "wps_open", Object, "DEFAULT" )
415 OpenOK = 1
416 end
417 end
418 if OpenOK = 1 then leave
419 end
420return OpenOK
421
422/*:VRX _BrowseResetObject
423*/
424_BrowseResetObject: procedure
425 ok = VRSet("CN_SMBTREE","Painting", 0 )
426 rh = arg(1)
427
428 /* Remove all files and directories whose parent is our share */
429 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "All", "AllRH." )
430 do I = 1 to AllRH.0
431 AllParentRH = VRMethod("CN_SMBTREE","GetRecordAttr",AllRH.I,"Parent")
432 if AllParentRH = rh then ok = VRMethod( "CN_SMBTREE", "RemoveRecord", AllRH.I )
433 end
434 ok = VRSet("CN_SMBTREE","Painting", 1 )
435return
436
437/*:VRX _ContainersInit
438*/
439_ContainersInit:
440 if options.!debug == 1 then say time()' _ContainersInit started'
441 /* Connection details */
442 CD.StatusFH = VRMethod( "CN_CONDET", "AddField", "Icon", "Status" )
443 CD.mpointFH = VRMethod( "CN_CONDET", "AddField", "String", "mpoint" )
444 CD.mpidxFH = VRMethod( "CN_CONDET", "AddField", "String", "index" )
445 CD.workgrpFH = VRMethod( "CN_CONDET", "AddField", "String", "workgroup" )
446 CD.serverFH = VRMethod( "CN_CONDET", "AddField", "String", "server" )
447 CD.shareFH = VRMethod( "CN_CONDET", "AddField", "String", "share" )
448 CD.userFH = VRMethod( "CN_CONDET", "AddField", "String", "user" )
449 CD.passwordFH = VRMethod( "CN_CONDET", "AddField", "String", "password" )
450 CD.spasswordFH = VRMethod( "CN_CONDET", "AddField", "String", "spassword" )
451 CD.masterFH = VRMethod( "CN_CONDET", "AddField", "String", "master" )
452 CD.mtypeFH = VRMethod( "CN_CONDET", "AddField", "String", "mastertype" )
453 CD.memlenFH = VRMethod( "CN_CONDET", "AddField", "String", "memlen" )
454 CD.easupportFH = VRMethod( "CN_CONDET", "AddField", "String", "easupport" )
455 CD.logfileFH = VRMethod( "CN_CONDET", "AddField", "String", "logfile" )
456 CD.loglevelFH = VRMethod( "CN_CONDET", "AddField", "String", "loglevel" )
457 CD.rwFH = VRMethod( "CN_CONDET", "AddField", "String", "readonly" )
458 CD.ctoFH = VRMethod( "CN_CONDET", "AddField", "String", "cachetimeout" )
459 CD.cldFH = VRMethod( "CN_CONDET", "AddField", "String", "cachelistings" )
460 CD.hashFH = VRMethod( "CN_CONDET", "AddField", "String", "hash" )
461
462 /* Connection details */
463 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpidxfh , "Visible", options.!debug)
464 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.passwordfh , "Visible", options.!debug)
465 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.spasswordfh , "Visible", options.!debug)
466 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.masterFH , "Visible", options.!debug)
467 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mtypeFH , "Visible", options.!debug)
468 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.memlenfh , "Visible", options.!debug)
469 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.logfilefh , "Visible", options.!debug)
470 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.loglevelfh , "Visible", options.!debug)
471 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.hashfh , "Visible", options.!debug)
472
473 ok = VRSet("CN_CONDET", "DetailSort", cd.mpointfh )
474
475 /* NLV columns */
476 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.statusfh , "Title", strip(NLVGetMessage(67),"T",":"))
477 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpointfh , "Title", strip(NLVGetMessage(27),"T",":"))
478 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.workgrpFH , "Title", strip(NLVGetMessage(21),"T",":"))
479 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.serverFH , "Title", strip(NLVGetMessage(19),"T",":"))
480 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.shareFH , "Title", strip(NLVGetMessage(20),"T",":"))
481 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.userFH , "Title", strip(NLVGetMessage(25),"T",":"))
482 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.ctoFH , "Title", strip(NLVGetMessage(130),"T",":"))
483 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.cldFH , "Title", strip(NLVGetMessage(131),"T",":"))
484 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.easupportFH , "Title", strip(NLVGetMessage(68),"T",":"))
485 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.rwfh , "Title", strip(NLVGetMessage(69),"T",":"))
486
487 /* SMBTree columns */
488 WorkgroupFH= VRMethod( "CN_smbtree", "AddField", "String", "Workgroup" )
489 NBFH = VRMethod( "CN_smbtree", "AddField", "String", "NetBIOS name" )
490 IpFH = VRMethod( "CN_smbtree", "AddField", "String", "IP" )
491 MBFH = VRMethod( "CN_smbtree", "AddField", "String", "Role" )
492 OSFH = VRMethod( "CN_smbtree", "AddField", "String", "OS" )
493 VersionFH = VRMethod( "CN_SmbTree", "AddField", "String", "Version" )
494 CommentFH = VRMethod( "CN_smbtree", "AddField", "String", "Comment" )
495 MacFH = VRMethod( "CN_smbtree", "AddField", "String", "MAC" )
496
497 ok = VRMethod("CN_smbtree","SetfieldAttr",IPFH, "ReadOnly", 1)
498 ok = VRMethod("CN_smbtree","SetfieldAttr",NBFH, "ReadOnly", 1)
499 ok = VRMethod("CN_smbtree","SetfieldAttr",MBFH, "ReadOnly", 1)
500 ok = VRMethod("CN_smbtree","SetfieldAttr",WorkGroupFH,"ReadOnly", 1)
501 ok = VRMethod("CN_smbtree","SetfieldAttr",OSFH, "ReadOnly", 1)
502 ok = VRMethod("CN_smbtree","SetfieldAttr",MacFH, "ReadOnly", 1)
503
504 if options.!debug == 1 then say time()' _ContainersInit done'
505return
506/*:VRX _ContextMenuSelectedSet
507*/
508_ContextMenuSelectedSet:
509 /* Fixme: This routine only works for CN_SMBTREE right now */
510
511 /* Hide all context menu entries */
512 ok = VRSet("Menu_Selected_Remove", "Visible", 0) /* CN_CONDET */
513 ok = VRSet("Menu_Selected_Retry", "Visible", 0) /* CN_CONDET */
514 ok = VRSet("Menu_Selected_Connect", "Visible", 0) /* CN_SMBTREE */
515 ok = VRSet("Menu_Selected_Sep1", "Visible", 0) /* CN_SMBTREE */
516 ok = VRSet("Menu_Selected_Info", "Visible", 0) /* CN_SMBTREE */
517 ok = VRSet("Menu_Selected_TimeSync", "Visible", 0) /* CN_SMBTREE */
518 ok = VRSet("Menu_Selected_Refresh", "Visible", 0) /* CN_SMBTREE */
519 ok = VRSet("Menu_Selected_Default_Workgroup","Visible", 0) /* CN_SMBTREE */
520
521
522/* ok = VRSet("Menu_Selected_TreeView","Visible",1)
523 ok = VRSet("Menu_Selected_DetailsView","Visible",1)
524 */
525 select
526 when SMBObj.udatatype = "DISK" then do
527 ok = VRSet("Menu_Selected_Connect", "Visible", 1)
528 end
529 when SMBObj.udatatype = "SERVER" then do
530 ok = VRSet("Menu_Selected_Connect", "Visible", 1)
531 ok = VRSet("Menu_Selected_Sep1", "Visible", 1)
532 ok = VRSet("Menu_Selected_Info", "Visible", 1)
533 ok = VRSet("Menu_Selected_TimeSync", "Visible", 1)
534 ok = VRSet("Menu_Selected_Refresh", "Visible", 1)
535 end
536 when SMBObj.udatatype = "WORKGROUP" then do
537 ok = VRSet("Menu_Selected_Connect", "Visible", 1)
538 ok = VRSet("Menu_Selected_Sep1", "Visible", 1)
539 ok = VRSet("Menu_Selected_Default_Workgroup","Visible", 1)
540 end
541 when SMBObj.udatatype = "PRINTER" then do
542 call _PrinterInfo
543 /* CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E' */
544 end
545 otherwise nop /* FILE DIRECTORY */
546 end
547return
548
549/*:VRX _CreateSmbConf
550*/
551_CreateSmbConf:
552 if options.!debug == 1 then say time()' '||"_CreateSmbConf started"
553 call lineout samba.!smbconf, '# Samba config file created using EVFSGUI ver. 'word(VRGet("Main","Hinttext"),2)
554 call lineout samba.!smbconf, '# from 'value("USER",,'OS2ENVIRONMENT')'@'value("HOSTNAME",,'OS2ENVIRONMENT')
555 call lineout samba.!smbconf, '# Date: 'date()' 'time()
556 call lineout samba.!smbconf, '[global]'
557 if settings.!network <> '' then do
558 call lineout samba.!smbconf, '09'x||'workgroup = 'settings.!network
559 end
560 else do
561 call lineout samba.!smbconf, '09'x||'workgroup = WORKGROUP'
562 end
563 call lineout samba.!smbconf, '09'x||'log level = 0'
564 ok = stream(samba.!smbconf,'c','close')
565 if options.!debug == 1 then say time()' '||"_CreateSmbConf done"
566return
567
568/*:VRX _DaemonRunning
569*/
570_DaemonRunning: procedure expose fs.
571 ok = PRProcessList(proc)
572 PID = 0
573 do I = 1 to proc.0
574 CurProc = VRParseFileName(proc.i.name,'NE')
575 if CurProc = fs.!prefix"CTL.EXE" then do
576 PID = proc.i.pid
577 leave
578 end
579 end
580return PID
581
582/*:VRX _DelSMBObjectShares
583*/
584_DelSMBObjectShares: procedure expose samba. options. SMBObj. rh
585 /* Purpose: Delete shares for a given Object (as handle) */
586
587 rh = arg(1)
588
589 ok = VRMethod("CN_smbtree", "GetRecordList", "All", rh.)
590
591 do J = 1 to rh.0 /* populate shares with valid entries */
592 ParentRH = VRMethod("CN_SMBTREE","GetRecordAttr",rh.J,"Parent")
593
594 if ParentRH = rh then do /* we found a share belonging to our server */
595 ok = VRMethod("CN_SMBTree", "RemoveRecord", rh.J )
596 end
597 end
598 SmbObj.shares. = ''
599 SmbObj.shares.0 = 0
600return
601
602/*:VRX _DialogPopulate
603*/
604_DialogPopulate:
605
606 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "Visible", "rh." )
607
608 ok = VRMethod("EF_SHARE", "Reset")
609 ok = VRMethod("EF_SERVER", "Reset")
610 ok = VRMethod("EF_NETWORK", "Reset")
611
612 do I = 1 to rh.0
613
614 Userdata = VRMethod("CN_SMBTREE","GetRecordAttr",rh.I,"Userdata")
615 ResName = VRMethod("CN_SMBTREE","GetRecordAttr",rh.I,"Caption")
616
617 parse var ResName ResName '0D0A'x .
618 ResName = strip(ResName)
619 parse var userdata ResType '|' .
620
621 select
622 when ResType = "WORKGROUP" then ok = VRMethod("EF_NETWORK","AddString", ResName)
623 when ResType = "SERVER" then ok = VRMethod("EF_SERVER", "AddString", ResName)
624 when ResType = "DISK" then ok = VRMethod("EF_SHARE", "AddString", ResName)
625 otherwise nop
626 end
627 end
628
629return
630
631/*:VRX _DLLSearch
632*/
633_DLLSearch: PROCEDURE
634 PARSE ARG dname
635 _bd = SysBootDrive()
636
637 IF _bd == '' THEN
638 _bd = FILESPEC('DRIVE', VALUE('COMSPEC',,'OS2ENVIRONMENT'))
639 _csys = _bd'\CONFIG.SYS'
640
641 CALL SysFileSearch 'LIBPATH=', _csys, 'match.'
642 DO i = 1 TO match.0
643 PARSE UPPER VAR match.i _lead 'LIBPATH=' _lpath
644 IF (_lead == '') & (_lpath <> '') THEN LEAVE
645 END
646
647 _lpath = SysQueryExtLIBPATH('B') || ';'_lpath';' || SysQueryExtLIBPATH('E')
648
649 CALL SETLOCAL
650 _testenv = 'TEST_'dname'_LIBPATH'
651 CALL VALUE _testenv, _lpath, 'OS2ENVIRONMENT'
652 location = SysSearchPath( _testenv, dname )
653 CALL ENDLOCAL
654
655RETURN location
656
657/*:VRX _dropdeprecated
658*/
659_dropdeprecated:
660 /* The stem-less counterparts of these variables are considered deprecated and should be removed wherever possible
661 The _dropdeprecated routine will drop any value in order to make sure the stem actually works
662 If another variable is added to the stem, ensure to also drop it in dropdeprecated otherwise it will not be exported
663 */
664 drop rh
665 drop parentrh
666 drop gparentrh
667 drop icon
668 drop resname
669 drop comment
670 drop udatatype
671 drop udatamsg
672return
673
674/*:VRX _Dynamic
675*/
676_Dynamic:
677 dyn_code = arg(1)
678 if options.!debug == 1 then say ' Dynamic code: 'dyn_code
679 interpret dyn_code; drop dyn_code
680return
681
682/*:VRX _GetSMBObjectProperties
683*/
684_GetSMBObjectProperties: procedure expose samba. options. SMBObj. rh icon resname udatatype udatamsg parentrh icons.
685 if options.!debug == 1 then say time()' _GetSMBObjectProperties started'
686
687 /* Purpose of this subroutine:
688 The current SMB object's frequently used properties should be stored in a stem
689 SMBObj.rh = recordhandle of the object
690 SMBObj.resname = resourcename of the object
691 SMBObj.comment = commentstring of the object
692 SMBObj.icon = icon of the object
693 SMBObj.udatatype = type of object (WORKGROUP, SERVER, DISK, PRINTER, FILE, DIRECTORY)
694 SMBObj.udatamsg = arbitrary object related data (Login message, file properties)
695 SMBObj.parentrh = recordhandle of the object's parent
696 SMBObj.gparentrh = recordhandle of the object's grandparent
697
698 The stem-less counterparts of these variables are considered deprecated and should be removed wherever possible
699 The _dropdeprecated routine will drop any value in order to make sure the stem actually works
700 If another variable is added to the stem, ensure to also drop it in dropdeprecated otherwise it will not be exported
701 */
702 call _dropdeprecated
703
704 SMBObj. = ""
705 SMBObj.rh = arg(1)
706
707 if VRMethod( "CN_SMBTREE", "ValidateRecord", SMBObj.rh) <> 1 | SMBObj.rh = "" then do
708 if options.!debug == 1 then say time()' _GetSMBObjectProperties aborted'
709 return
710 end
711
712 SMBObj.Icon = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.rh, "Icon")
713
714 SMBObj.parentrh = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.rh, "Parent")
715 if SMBObj.parentrh = ""
716 then SMBObj.gparentrh = ""
717 else SMBObj.gparentrh = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Parent")
718
719 SMBObj.resname = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.rh, "Caption")
720 parse var SMBObj.resname SMBObj.resname '0D0A'x SMBObj.comment
721 SMBObj.resname = strip(SMBObj.resname)
722 SMBObj.comment = strip(SMBObj.comment)
723
724 Userdata = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.rh, "Userdata")
725 parse var userdata SMBObj.udatatype '|' SMBObj.udatamsg
726 SMBObj.udatatype = strip(SMBObj.udatatype)
727 SMBObj.udatamsg = strip(SMBObj.udatamsg)
728
729 if options.!debug == 1 then do
730 say ' Handle: "'SMBObj.rh'"'
731 say ' GParentrh "'SMBObj.gparentrh'"'
732 say ' Resource: "'SMBObj.resname'"'
733 say ' Comment: "'SMBObj.comment'"'
734 say ' Type: "'SMBObj.udatatype'"'
735 say ' Message: "'SMBObj.udatamsg'"'
736 say ' Icon: "'SMBObj.icon'"'
737 end
738
739 if options.!debug == 1 then say time()' _GetSMBObjectProperties done'
740return
741
742/*:VRX _GetSMBObjectShares
743*/
744_GetSMBObjectShares: procedure expose samba. options. SMBObj.
745 /* Purpose: Return stem with shares for a given Object (as handle) */
746
747 rh = arg(1)
748
749 SmbObj.shares. = ''
750 SmbObj.shares.0 = 0
751 I = 0
752 ok = VRMethod("CN_smbtree", "GetRecordList", "All", rh.)
753
754 do J = 1 to rh.0 /* populate shares with valid entries */
755 Userdata = VRMethod("CN_SMBTREE","GetRecordAttr",rh.J,"Userdata")
756 ResName = VRMethod("CN_SMBTREE","GetRecordAttr",rh.J,"Caption")
757 ParentRH = VRMethod("CN_SMBTREE","GetRecordAttr",rh.J,"Parent")
758
759 parse var ResName ResName '0D0A'x .
760 ResName = strip(ResName)
761 parse var userdata ResType '|' .
762
763 if ParentRH = rh then do /* we found a share belonging to our server */
764 if ResType = "DISK" then do
765 I = I + 1
766 SmbObj.shares.I = ResName
767 end
768 end
769 end
770 SmbObj.shares.0 = I
771return
772
773/*:VRX _GUIInit
774*/
775_GUIInit:
776 if options.!debug == 1 then say time()' _GUIInit started'
777 CALL VRSet 'Main', 'HelpFile', settings.!helpfile
778
779 /* Main Window */
780 CALL NLVSetText 'Main', "Caption", 1
781
782 CALL NLVSetText 'Menu_File', "Caption", 80
783 CALL NLVSetText 'Menu_Context', "Caption", 81
784 CALL NLVSetText 'Menu_Selected', "Caption", 83
785 CALL NLVSetText 'Menu_Help', "Caption", 84
786
787 CALL NLVSetText 'Menu_File_LOAD', "Caption", 31
788 CALL NLVSetText 'Menu_File_SAVE', "Caption", 30
789 CALL NLVSetText 'Menu_File_LMHosts_Reset', "Caption", 127
790 CALL NLVSetText 'Menu_File_ucCred_Reset', "Caption", 128
791 CALL NLVSetText 'Menu_File_Autostart', "Caption", 35
792 CALL NLVSetText 'Menu_File_Autostart_Activate', "Caption", 76
793 CALL NLVSetText 'Menu_File_Autostart_Deactivate', "Caption", 77
794 CALL NLVSetText 'Menu_File_Daemon', "Caption", 126
795 CALL NLVSetText 'Menu_File_Daemon_Start', "Caption", 76
796 CALL NLVSetText 'Menu_File_Daemon_Stop', "Caption", 77
797 CALL NLVSetText 'Menu_File_CLOSE', "Caption", 29
798
799 CALL NLVSetText 'Menu_Context_DETACH', "Caption", 11
800 CALL NLVSetText 'Menu_Context_DETACH_ALL', "Caption", 120
801 CALL NLVSetText 'Menu_Context_REFRESH', "Caption", 38
802 CALL NLVSetText 'Menu_Context_UNMOUNT', "Caption", 12
803 CALL NLVSetText 'Menu_Context_EDIT', "Caption", 32
804 CALL NLVSetText 'Menu_Context_OPEN', "Caption", 94
805 CALL NLVSetText 'Menu_Context_OPEN_ICON', "Caption", 95
806 CALL NLVSetText 'Menu_Context_OPEN_TREE', "Caption", 96
807 CALL NLVSetText 'Menu_Context_OPEN_DETAIL', "Caption", 97
808 CALL NLVSetText 'Menu_Context_OPEN_SETTINGS', "Caption", 98
809 CALL NLVSetText 'Menu_Context_OPEN_SPLITVIEW', "Caption", 99
810
811 CALL NLVSetText 'Menu_Selected_Connect', "Caption", 28
812 CALL NLVSetText 'Menu_Selected_Remove', "Caption", 12
813 CALL NLVSetText 'Menu_Selected_Retry', "Caption", 90
814 CALL NLVSetText 'Menu_Selected_Info', "Caption", 92
815 CALL NLVSetText 'Menu_Selected_TimeSync', "Caption", 129
816 CALL NLVSetText 'Menu_Selected_Refresh', "Caption", 38
817 CALL NLVSetText 'Menu_Selected_Default_Workgroup',"Caption", 75
818
819 CALL NLVSetText 'Menu_Help_Extended', "Caption", 4
820 CALL NLVSetText 'Menu_Help_About', "Caption", 91
821
822 /* Left pane */
823 CALL NLVSetText 'DT_CURRENT', "Caption", 10
824 CALL NLVSetText 'PB_DETACH', "Caption", 11
825 CALL NLVSetText 'PB_UNMOUNT', "Caption", 12
826
827 /* Dialog window */
828 CALL NLVSetText 'DT_MOUNT', "Caption", 14
829 CALL NLVSetText 'DT_SERVER', "Caption", 19
830 CALL NLVSetText 'DT_SHARE', "Caption", 20
831 CALL NLVSetText 'DT_NETWORK', "Caption", 21
832 CALL NLVSetText 'CHK_MTYPE', "Caption", 23
833 CALL NLVSetText 'DT_USER', "Caption", 25
834 CALL NLVSetText 'DT_PASSWORD', "Caption", 26
835 CALL NLVSetText 'DT_MPOINT', "Caption", 27
836 CALL NLVSetText 'PB_MOUNT', "Caption", 28
837 CALL NLVSetText 'PB_EDIT_CANCEL', "Caption", 3
838 CALL NLVSetText 'PB_DIALOG_HELP', "Caption", 4
839 CALL NLVSetText 'PB_CLEARCRED', "Caption", 89
840
841 IF (mtype.1 \= '' & mtype.2 \= '' & mtype.3 \= '' & mtype.4 \= '') THEN DO
842 CALL VRMethod CB_MOUNT, 'Clear'
843 CALL VRMethod CB_MOUNT, 'AddStringList', 'mtype.'
844 END
845
846 if (mtype.1 = '' & mtype.2 = '' & mtype.3 = '' & mtype.4 = '') THEN DO /* we do not seem to have an NLV file */
847 /* we fill the array with the list predefined directly in the GUI control */
848 ok = VRMethod( "CB_MOUNT", "GetStringList", "mtype." )
849 end
850
851 /* SMBTree */
852 CALL NLVSetText 'PB_SMBTREE_CONNECT', "Caption", 28
853 CALL NLVSetText 'PB_SMBTREE_REFRESH', "Caption", 38
854 CALL NLVSetText 'PB_SMBTREE_HELP', "Caption", 4
855 CALL NLVSetText 'CN_SMBTREE', "Caption",140
856
857/** Use AutoSize property instead
858 ok = VRSet("Pict_Throbber","Width", VRMethod( "Screen", "PixelsToTwips", 32 ))
859 ok = VRSet("Pict_Throbber","Height", VRMethod( "Screen", "PixelsToTwips", 32 ))
860**/
861 /* Condet */
862 CALL NLVSetText 'PB_CONDET_SAVE', "Caption", 30
863 CALL NLVSetText 'PB_CONDET_LOAD', "Caption", 31
864 CALL NLVSetText 'PB_CONDET_HELP',"Caption", 4
865
866 /* Statusbar */
867 ok = VRSet("DT_STATUSBAR", "Caption", VRGet("Main", "HintText"))
868
869 /* Common margin around controls */
870 margin = ((VRGet("Main", "InteriorLeft") / 3) * 2) + 2
871
872 smbwait = "#50"
873
874 if options.!debug == 1 then say time()' _GUIInit done'
875return
876
877/*:VRX _INILoad
878*/
879_INILoad:
880 if options.!debug == 1 then say time()' _INILoad started'
881
882 /* Locate the profile */
883 os2_ini = VALUE('USER_INI',,'OS2ENVIRONMENT')
884 inipath = VRParseFilePath( os2_ini, 'DP')
885 IF inipath == '' THEN inipath = SysBootDrive() || '\OS2'
886 settings.!ini = inipath'\evfsgui.ini'
887 drop os2_ini inipath
888 if options.!debug == 1 then say ' EVFSGUI INIfile = "'settings.!ini'"'
889
890 settings.!network = ""
891 /* Create default smb.conf if none exists */
892 if \VRFileExists( samba.!smbconf ) then call _CreateSmbConf
893
894 say _ucInitObj()
895 say _ucChkObj()
896
897 IF STREAM( settings.!ini, 'C', 'QUERY EXISTS') == '' THEN DO
898 /* First start */
899 if options.!debug == 1 then say " First start!"
900
901 advanced.!browseauth = 0
902 advanced.!browseimme = 1
903 advanced.!broadcast = 0
904 advanced.!special = 0
905 advanced.!savepassive= 0
906 advanced.!lmhosts = 1
907
908 advanced.!miniicons = 0
909
910 advanced.!easupport = 1
911 advanced.!readonly = 0
912 advanced.!alwaysmp = 0
913 advanced.!cachetimeout = 10
914 advanced.!cachelistings = 32
915
916 CALL VRSet "Main", 'Height', 7576
917 CALL VRSet "Main", 'Width', 8200
918 CALL VRSet "SPLIT_MAIN", 'Left', 2915
919 CALL VRMethod "Main", 'CenterWindow'
920 call VRSet 'Main', 'Visible', 1
921 call Main_Resize
922 END
923 ELSE DO
924 /* Subsequent start */
925 /* Load window position settings */
926 settings.!x = VRGetIni('Settings', 'X', settings.!ini, 'NoClose')
927 settings.!y = VRGetIni('Settings', 'Y', settings.!ini, 'NoClose')
928 settings.!h = VRGetIni('Settings', 'H', settings.!ini, 'NoClose')
929 settings.!w = VRGetIni('Settings', 'W', settings.!ini, 'NoClose')
930 settings.!s = VRGetIni('Settings', 'S', settings.!ini, 'NoClose')
931
932 IF settings.!x == '' THEN settings.!x = -1
933 IF settings.!y == '' THEN settings.!y = -1
934 IF settings.!h == '' THEN settings.!h = -1
935 IF settings.!w == '' THEN settings.!w = -1
936 IF settings.!s == '' THEN settings.!s = -1
937
938 /* Titlebar settings */
939 settings.!curbcolor = VRGetIni('Settings', 'TitleBarBackground', settings.!ini, 'NoClose')
940 settings.!curfcolor = VRGetIni('Settings', 'TitleBarForeground', settings.!ini, 'NoClose')
941 IF (settings.!curbcolor = '' | settings.!curbcolor = '<default>') THEN settings.!curbcolor = 'SystemActiveTitle'
942 IF (settings.!curfcolor = '' | settings.!curfcolor = '<default>') THEN settings.!curfcolor = 'SystemActiveTitleText'
943
944 /* Load font settings */
945 IF VRFileExists( SysBootDrive() || '\OS2DBCS') == 1
946 THEN default_font = '9.WarpSans Combined'
947 ELSE default_font = '9.WarpSans'
948
949 settings.!cfont = VRGetIni('Settings', 'ContainerFont', settings.!ini, 'NoClose')
950 settings.!wfont = VRGetIni('Settings', 'WindowFont', settings.!ini, 'NoClose')
951 IF settings.!cfont == '' THEN settings.!cfont = default_font
952 IF settings.!wfont == '' THEN settings.!wfont = default_font
953
954 /* Current page */
955 settings.!curpage = VRGetIni('Settings', 'CurrentPage', settings.!ini, 'NoClose')
956 IF settings.!curpage == '' THEN settings.!curpage = 1
957
958 /* Global settings */
959 advanced.!browseauth = VRGetIni('Settings', 'BrowseAuth', settings.!ini, 'NoClose')
960 advanced.!browseimme = VRGetIni('Settings', 'BrowseImme', settings.!ini, 'NoClose')
961 advanced.!broadcast = VRGetIni('Settings', 'Broadcast', settings.!ini, 'NoClose')
962 advanced.!special = VRGetIni('Settings', 'SpecialShares', settings.!ini, 'NoClose')
963 advanced.!savepassive= VRGetIni('Settings', 'SavePassive', settings.!ini, 'NoClose')
964 advanced.!lmhosts = VRGetIni('Settings', 'LMHosts', settings.!ini, 'NoClose')
965 advanced.!miniicons = VRGetIni('Settings', 'MiniIcons', settings.!ini, 'NoClose')
966
967 advanced.!easupport = VRGetIni('Settings', 'EAS', settings.!ini, 'NoClose')
968 advanced.!readonly = VRGetIni('Settings', 'ReadOnly', settings.!ini, 'NoClose')
969 advanced.!alwaysmp = VRGetIni('Settings', 'AlwaysMP', settings.!ini, 'NoClose')
970 advanced.!cachetimeout = VRGetIni('Settings', 'CacheTimeOut', settings.!ini, 'NoClose')
971 advanced.!cachelistings = VRGetIni('Settings', 'CacheListings',settings.!ini, 'NoClose')
972
973 IF advanced.!browseauth == '' THEN advanced.!browseauth = 0
974 IF advanced.!browseimme == '' THEN advanced.!browseimme = 1
975 IF advanced.!broadcast == '' THEN advanced.!broadcast = 0
976 IF advanced.!special == '' THEN advanced.!special = 0
977 IF advanced.!savepassive== '' THEN advanced.!savepassive= 0
978 IF advanced.!lmhosts == '' THEN advanced.!lmhosts = 1
979
980 options.!storecreds = VRGetIni('Settings', 'StoreCreds', settings.!ini, 'NoClose')
981say "options.!storecreds = "options.!storecreds
982 IF options.!storecreds == '' then options.!storecreds = 1
983
984say "options.!storecreds = "options.!storecreds
985 IF _ucChkObj() = 0 then options.!storecreds = 0
986say "options.!storecreds = "options.!storecreds
987
988 options.!tracmark = VRGetIni('Settings', 'TracMarkup', settings.!ini, 'NoClose')
989 options.!debug = VRGetIni('Settings', 'Debug', settings.!ini)
990 IF options.!debug == '' THEN options.!debug = 0 /* Turn off debug by default for release builds */
991 if options.!debug == 1 then ok = VRRedirectStdIO("ON")
992 else ok = VRRedirectStdio("OFF")
993
994 IF advanced.!miniicons == '' THEN advanced.!miniicons = 0
995
996 /* Advanced */
997 IF advanced.!easupport == '' THEN advanced.!easupport = 1
998 IF advanced.!readonly == '' THEN advanced.!readonly = 0
999 IF advanced.!alwaysmp == '' THEN advanced.!alwaysmp = 0
1000 IF advanced.!cachetimeout == '' THEN advanced.!cachetimeout = 10
1001 IF advanced.!cachelistings == '' THEN advanced.!cachelistings = 32
1002
1003 /* Apply the settings */
1004 ok = VRSet("DT_CURRENT","BACKCOLOR", settings.!curbcolor )
1005 ok = VRSet("DT_CURRENT","FORECOLOR", settings.!curfcolor )
1006
1007 ok = VRset("CN_CURRENT", "MiniIcons", advanced.!miniicons)
1008 ok = VRset("CN_SMBTREE", "MiniIcons", advanced.!miniicons)
1009 ok = VRset("CN_CONDET", "MiniIcons", advanced.!miniicons)
1010
1011 IF ( settings.!x >= 0 ) & ( settings.!y >= 0 ) & ( settings.!l >= 0 ) & ( settings.!w >= 0 ) & ( settings.!s >= 0 ) THEN DO
1012 CALL VRSet VRWindow(), 'Left', settings.!x
1013 CALL VRSet VRWindow(), 'Top', settings.!y
1014 CALL VRSet VRWindow(), 'Height', settings.!h
1015 CALL VRSet VRWindow(), 'Width', settings.!w
1016 CALL VRSet "SPLIT_MAIN", 'Left', settings.!s
1017 END
1018 ELSE CALL VRMethod VRWindow(), 'CenterWindow'
1019
1020 CALL VRSet "CN_CURRENT", 'Font', settings.!cfont
1021 CALL VRSet "CN_CONDET", 'Font', settings.!cfont
1022 CALL VRSet "CN_SMBTREE", 'Font', settings.!cfont
1023
1024 CALL VRSet 'Main', 'Font', settings.!wfont
1025 CALL VRSet 'Main', 'StatusFont', settings.!wfont
1026
1027 ok = VRSet("TDL_1","Selected", settings.!curpage)
1028 END
1029
1030 if options.!nogui == 1 then CALL VRLoadSecondary "SW_PROGRESS","W"
1031 else do
1032 if options.!delay > 0 then do
1033 /* Set mouse pointer to wait - this operation might take a few seconds */
1034 call VRSet VRWindow(), 'Pointer', 'Wait'
1035 call Main_Resize
1036 ok = SysSleep(options.!delay)
1037 options.!delay = 0
1038 /* Set mouse pointer to default again */
1039 call VRSet VRWindow(), 'Pointer', '<default>'
1040 end
1041 end
1042
1043 /* Look for usable credentials */
1044 if options.!storecreds = 1 & _ucChkUc() then do
1045 UserCred = _ucGetUc()
1046 parse var UserCred '--user='Credentials.!username'%'Credentials.!password
1047 if left(Credentials.!password,1)='%' then Credentials.!password = substr(Credentials.!password,2)
1048 ok = VRSet("EF_USER", "Value",Credentials.!username)
1049 ok = VRSet("EF_PASSWORD","Value",Credentials.!password)
1050 ok = VRSet("CN_SMBTREE","Caption",VRGet("CN_SMBTREE","Caption")||": "Credentials.!username)
1051 end
1052 else ok = VRSet("CN_SMBTREE","Caption",VRGet("CN_SMBTREE","Caption")||": Guest")
1053
1054 /* SambaInit.VRS needs these 2 */
1055 ShowHidden = advanced.!special
1056 Broadcast = advanced.!broadcast
1057
1058 /* in non debug versions this is normally not visible */
1059 if options.!debug == 1 then say ' NLV MessageFile = "'settings.!messages'"'
1060 if options.!debug == 1 then say ' NLV HelpFile = "'settings.!helpfile'"'
1061
1062 if options.!debug == 1 then say time()' _INILoad done'
1063RETURN
1064
1065/*:VRX _INISave
1066*/
1067_INISave: PROCEDURE EXPOSE settings. options. icons. fs. advanced. cd. samba.
1068 if options.!debug == 1 then say time()' '||"SaveSettings started"
1069
1070 if advanced.!savepassive then call _PassiveSave
1071
1072/* This does not make sense anymore
1073 settings.!network = VRGet("EF_NETWORK","Value")
1074 CALL VRSetIni 'Settings', 'Network', settings.!network, settings.!ini, 'NoClose'
1075 */
1076
1077 font = VRGet("CN_CURRENT", 'Font')
1078 CALL VRSetIni 'Settings', 'ContainerFont', font, settings.!ini, 'NoClose'
1079
1080 font = VRGet('Main', 'Font')
1081 CALL VRSetIni 'Settings', 'WindowFont', font, settings.!ini, 'NoClose'
1082
1083 settings.!curbcolor = VRGet("DT_CURRENT","BackColor")
1084 CALL VRSetIni 'Settings', 'TitleBarBackground', settings.!curbcolor, settings.!ini, 'NoClose'
1085
1086 settings.!curfcolor = VRGet("DT_CURRENT","ForeColor")
1087 CALL VRSetIni 'Settings', 'TitleBarForeground', settings.!curfcolor, settings.!ini, 'NoClose'
1088
1089 /* Global options */
1090 CALL VRSetIni 'Settings', 'BrowseAuth', advanced.!browseauth , settings.!ini, 'NoClose'
1091 CALL VRSetIni 'Settings', 'BrowseImme', advanced.!browseimme , settings.!ini, 'NoClose'
1092 CALL VRSetIni 'Settings', 'Broadcast', advanced.!broadcast , settings.!ini, 'NoClose'
1093 CALL VRSetIni 'Settings', 'SpecialShares', advanced.!special , settings.!ini, 'NoClose'
1094 CALL VRSetIni 'Settings', 'SavePassive', advanced.!savepassive, settings.!ini, 'NoClose'
1095 CALL VRSetIni 'Settings', 'LMHosts', advanced.!lmhosts , settings.!ini, 'NoClose'
1096
1097 CALL VRSetIni 'Settings', 'StoreCreds', options.!storecreds , settings.!ini, 'NoClose'
1098 CALL VRSetIni 'Settings', 'Debug', options.!debug , settings.!ini, 'NoClose'
1099 CALL VRSetIni 'Settings', 'MiniIcons', advanced.!miniicons , settings.!ini, 'NoClose'
1100 CALL VRSetIni 'Settings', 'TracMarkup', options.!tracmark , settings.!ini, 'NoClose'
1101
1102 /* Advanced */
1103 CALL VRSetIni 'Settings', 'EAS', advanced.!easupport , settings.!ini, 'NoClose'
1104 CALL VRSetIni 'Settings', 'ReadOnly', advanced.!readonly , settings.!ini, 'NoClose'
1105 CALL VRSetIni 'Settings', 'AlwaysMP', advanced.!alwaysmp , settings.!ini, 'NoClose'
1106 CALL VRSetIni 'Settings', 'CacheTimeOut', advanced.!cachetimeout , settings.!ini, 'NoClose'
1107 CALL VRSetIni 'Settings', 'CacheListings', advanced.!cachelistings, settings.!ini, 'NoClose'
1108
1109 /* Current page */
1110 settings.!curpage = VRget("TDL_1","Selected")
1111 CALL VRSetIni 'Settings', 'CurrentPage', settings.!curpage , settings.!ini, 'NoClose'
1112
1113 /* Save position and size */
1114 settings.!l = VRGet("Main", 'Left' )
1115 settings.!t = VRGet("Main", 'Top' )
1116 settings.!h = VRGet("Main", 'Height')
1117 settings.!w = VRGet("Main", 'Width' )
1118 settings.!s = VRGet("SPLIT_Main", 'Left' )
1119
1120 CALL VRSetIni 'Settings', 'X', settings.!l, settings.!ini, 'NoClose'
1121 CALL VRSetIni 'Settings', 'Y', settings.!t, settings.!ini, 'NoClose'
1122 CALL VRSetIni 'Settings', 'H', settings.!h, settings.!ini, 'NoClose'
1123 CALL VRSetIni 'Settings', 'W', settings.!w, settings.!ini, 'NoClose'
1124 CALL VRSetIni 'Settings', 'S', settings.!s, settings.!ini
1125
1126 if options.!debug == 1 then say time()' '||"SaveSettings done"
1127RETURN
1128
1129/*:VRX _isValidIPAddress
1130*/
1131_isValidIPAddress: procedure
1132 ipaddr = arg(1)
1133 d. = ''
1134 d.0 = 4
1135 fail = 0
1136 parse var ipaddr d.1 '.' d.2 '.' d.3 '.' d.4
1137 do I = 1 to 4
1138 if datatype(d.I) = 'NUM' then do
1139 if d.I < 0 | d.I > 255 then fail = 1
1140 end
1141 else fail = 1
1142 if fail = 1 then leave
1143 end
1144return(\fail)
1145
1146/*:VRX _LMHostsRead
1147*/
1148_LMHostsRead:
1149 ok = file2stem(samba.!lmhosts,'lmhosts.', 'NoDel')
1150 lmname. = "#"
1151 lmapp. = ""
1152 lmname.0 = lmhosts.0
1153 lmip.0 = lmhosts.0
1154 lmapp.0 = lmhosts.0
1155 do I = 1 to lmhosts.0
1156 if left(lmhosts.I,1) = "#" then iterate
1157 parse var lmhosts.I lmip.I ' ' lmname.I '#' lmapp.I
1158 lmip.I = strip(lmip.I)
1159 lmname.I = strip(lmname.I)
1160 if lmapp.I <> "" & left(lmapp.I,1) <> '#' then lmapp.I = '#'lmapp.I
1161 end
1162 drop lmhosts.
1163return
1164
1165/*:VRX _LMHostsReset
1166*/
1167_LMHostsReset:
1168 ok = SysFileDelete(samba.!lmhosts)
1169
1170 Buttons.1 = NLVGetMessage(2)
1171 Buttons.0 = 1
1172 if ok = 0 then do
1173 id = VRMessage( VRWindow(), NLVGetMessage(118,samba.!lmhosts), NLVGetMessage(127), "Information", "Buttons.", 1, 1 )
1174 end
1175 else do
1176 id = VRMessage( VRWindow(), samba.!lmhosts', RC = 'ok, NLVGetMessage(127), "Error", "Buttons.", 1, 1 )
1177 end
1178return
1179
1180/*:VRX _LMHostsUpdate
1181*/
1182_LMHostsUpdate:
1183 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "Visible", "rh." )
1184 do I = 1 to rh.0
1185 call _GetSMBObjectProperties rh.I
1186 if SMBObj.udatatype = "SERVER" then do
1187 IP = VRMethod("CN_SMBTREE","GetFieldData",rh.I, IPFH )
1188 Role = VRMethod("CN_SMBTREE","GetFieldData",rh.I, MBFH )
1189 parse var IP T1 '.' T2 '.' T3 '.' T4
1190 if datatype(T1) = "NUM" & datatype(T2) = "NUM" & datatype(T3) = "NUM" & datatype(T4) = "NUM" then do
1191 FoundName = 0
1192 /* Don't add localhost and local link IP to LMHosts */
1193 if T1 = '127' & T2 = '0' & T3 = '0' & T4 = '1' then iterate
1194 if T1 = '169' & T2 = '254' then iterate
1195 do J = 1 to lmname.0 /* machine already in LMHosts? */
1196 if lmname.J = SmbObj.resname then do /* Yes? then update IP */
1197 lmip.J = IP
1198 if pos('PDC',Role) > 0 & SMBObj.parentrh <> "" then do
1199 Domain = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Caption")
1200 lmapp.J = "#DOM:"Domain
1201 end
1202 FoundName = 1
1203 leave
1204 end
1205 end
1206 if FoundName = 0 then do /* New machine for LMhosts - add it */
1207 new = lmname.0 + 1
1208 lmname.0 = new
1209 lmname.new = SmbObj.resname
1210 lmip.0 = new
1211 lmip.new = IP
1212 end
1213 end
1214 end
1215 end
1216 ok = SysFileDelete(samba.!lmhosts)
1217 call lineout samba.!lmhosts,'# Created by 'translate(VRParseFilename(settings.!ini,'N'))' Version 'word(VRGet("Main","Hinttext"),2)' on 'date()' at 'time()
1218 call lineout samba.!lmhosts,'# Syntax:'
1219 call lineout samba.!lmhosts,left('# IP-address',25)||left('NetBIOS-name',16)' [Role]'
1220 do I = 1 to lmname.0
1221 if left(lmname.I,1) = "#" then iterate
1222 call lineout samba.!lmhosts,left(lmip.I,25)||left(lmname.I,16)' 'lmapp.I
1223 end
1224 ok = stream(samba.!lmhosts,'c','close')
1225return
1226
1227/*:VRX _LMHostsWrite
1228*/
1229_LMHostsWrite:
1230
1231return
1232
1233/*:VRX _LoadOtherFuncs
1234*/
1235_LoadOtherFuncs:
1236 IF options.!debug == 1 then say time()' _LoadotherFuncs() started'
1237 SIGNAL ON SYNTAX
1238
1239 call RxFuncAdd 'SysLoadFuncs', 'REXXUTIL', 'SysLoadFuncs'
1240 call SysLoadFuncs
1241
1242 call rxfuncadd 'IniLoadFuncs', 'REXXINI', 'IniLoadFuncs'
1243 call IniLoadFuncs
1244
1245 call RxFuncAdd 'PRLoadFuncs', 'PR1UTIL', 'PRLoadFuncs'
1246 call PRLoadFuncs
1247
1248 call RxFuncAdd 'RxuInit', 'RXU', 'RxuInit'
1249 call RxuInit
1250
1251 SIGNAL OFF SYNTAX
1252 IF options.!debug == 1 then say time()' _LoadotherFuncs() done'
1253return
1254
1255SYNTAX:
1256 IF options.!debug == 1 then say time()' _LoadotherFuncs() error handler entered.'
1257 Fatal = 1
1258 parse source . . InVXIDE
1259 if left(InVXIDE,length(Tempdir)+5) = TempDir||'__tmp'
1260 then xxx = "VX-REXX IDE: "strip(translate(word(sourceline(SIGL-1),4),' ',"',"))
1261 else xxx = 'A'
1262 call VRMessage 'Main', xxx' REXX function library DLL is missing or unloadable!', "EVFSGUI fatal error", "E"
1263 IF options.!debug == 1 then say time()' _LoadotherFuncs() error handler finished, program will be terminated.'
1264signal Quit
1265
1266/*:VRX _ParseCommandLine
1267*/
1268_ParseCommandLine:
1269 if options.!debug == 1 then say time()' _ParseCommandLine() started'
1270 CmdLine = VRGet("Application","Commandline")
1271 upCmdLine = translate(CmdLine)
1272 if options.!debug == 1 then say ' Commandline = "'CmdLine'"'
1273
1274 ForceNDFS = 0
1275 if wordpos('-NDFS',upCmdLine) > 0 then do
1276 if options.!debug == 1 then say " NDFS switch detected"
1277 CmdLine = delWord(CmdLine,wordpos('-NDFS',upCmdLine),1)
1278 upCmdLine = translate(CmdLine)
1279 ForceNDFS = 1
1280 CALL VRSet "Menu_File_Autostart","Visible", 0
1281 end
1282
1283 if wordpos('-AUTOCLOSE',upCmdLine) > 0 then do
1284 options.!autoclose = 1
1285 if options.!debug == 1 then say " AutoClose switch detected"
1286 CmdLine = delWord(CmdLine,wordpos('-AUTOCLOSE',upCmdLine),1)
1287 upCmdLine = translate(CmdLine)
1288 end
1289 if wordpos('-NOGUI',upCmdLine) > 0 then do
1290 options.!nogui = 1
1291 options.!autoclose = 1
1292 if options.!debug == 1 then say " -NOGUI switch detected"
1293 CmdLine = delWord(CmdLine,wordpos('-NOGUI',upCmdLine),1)
1294 upCmdLine = translate(CmdLine)
1295 end
1296
1297 if wordpos('-TIMESYNC',upCmdLine) > 0 then do
1298 options.!timesync = 1
1299 if options.!debug == 1 then say " -TIMESYNC switch detected"
1300 dwpos = wordpos('-TIMESYNC',upCmdLine)
1301 if dwpos = words(upCmdLine) then do /* TIMESYNC was last parm - assume automatic */
1302 options.!timesrv = ""
1303 CmdLine = delWord(CmdLine,wordpos('-TIMESYNC',upCmdLine),1)
1304 end
1305 else do
1306 options.!timesrv = word(upCmdLine,dwpos+1)
1307 if left(options.!timesrv,1) = "-" then do /* other parameter detected */
1308 options.!timesrv = ""
1309 CmdLine = delWord(CmdLine,wordpos('-TIMESYNC',upCmdLine),1)
1310 end
1311 else do /* seems we have a timeserver - IP or name - no further check */
1312 CmdLine = delWord(CmdLine,wordpos('-TIMESYNC',upCmdLine),2)
1313 end
1314 end
1315 upCmdLine = translate(CmdLine)
1316 end
1317
1318 if wordpos('-DELAY',upCmdLine) > 0 then do
1319 if options.!debug == 1 then say " DELAY switch detected"
1320 dwpos = wordpos('-DELAY',upCmdLine)
1321 if dwpos = words(upCmdLine) then do /* DELAY was last parm - assume 60 seconds */
1322 options.!delay = 60
1323 CmdLine = delWord(CmdLine,dwpos,1)
1324 end
1325 else do
1326 options.!delay = word(upCmdLine,dwpos+1)
1327 if datatype(options.!delay) <> "NUM" then do /* No number of seconds specified */
1328 options.!delay = 60
1329 CmdLine = delWord(CmdLine,dwpos,1)
1330 end
1331 else do
1332 CmdLine = delWord(CmdLine,dwpos,2)
1333 end
1334 end
1335 upCmdLine = translate(CmdLine)
1336 if options.!debug == 1 then say " DELAY set to "options.!delay" seconds."
1337 end
1338
1339 Profile = strip(CmdLine,,'"')
1340 if Profile <> "" then do
1341 Profile = strip(VRParseFilename(Profile,"DPNE"))
1342 options.!autoload = 1
1343 if options.!debug == 1 then say ' Profile = "'Profile'"'
1344 if \VRFileExists(Profile) then do
1345 CALL VRMessage 'Main', NLVGetMessage( 102, Profile ), NLVGetMessage( 1 ), 'E'
1346 /* Disable all switches in case of an error */
1347 options.!autoload = 0
1348 options.!autoclose = 0
1349 options.!nogui = 0
1350 options.!delay = 0
1351 end
1352 end
1353 if options.!debug == 1 then say time()' _ParseCommandLine done'
1354return
1355
1356/*:VRX _PassiveLoad
1357*/
1358_PassiveLoad:
1359 if options.!debug == 1 then say time()' '||"_PassiveLoad started"
1360
1361 do cnt = 1 to 255
1362 resdata = VRGetIni( "PassiveConnections", cnt, settings.!ini )
1363 if resdata = "" then leave
1364
1365 parse var resdata p_mpoint resource rwFlag
1366 if options.!debug == 1 then do
1367 say ' Connection 'cnt', resdata ="'resdata'"'
1368 end
1369
1370/* vfs.!drive = FILESPEC('DRIVE', node )
1371 vfs.!mountpoint = STRIP( node, 'T', '\') */
1372
1373 /* In case we only have a volume we reattach the backslash, otherwise restore will fail */
1374 if vfs.!drive = vfs.!mountpoint then vfs.!mountpoint = vfs.!mountpoint||'\'
1375
1376 p_mpidx = ""
1377
1378 call ParseResParmString
1379
1380 p_rw = rwFlag
1381
1382 /* Create the hash string */
1383 hashstr = p_mpoint' 'translate(p_workgroup)' 'translate(p_server)' 'translate(p_share)' 'p_user' 'p_spassword' 'p_easupport' 'p_rw
1384
1385 /* A truncated, useless entry - skip it */
1386 if p_server = "" & p_share = ""& p_workgroup = "" then iterate
1387
1388 md5.cnt = rexx_md5(hashstr)
1389 md5.0 = cnt
1390
1391 /* Passive connection already restored - skip the dupe one */
1392 PassiveDupe = 0
1393 do X = 1 to md5.0-1
1394 if md5.cnt = md5.X then PassiveDupe = 1
1395 end
1396 if PassiveDupe = 1 then iterate /* do not add record for a duplicate passive connection */
1397
1398 /* Everything is ok, let's add a new entry */
1399 cd.lastrh = VRMethod("CN_CONDET","AddRecord")
1400
1401 /* Fill columns now */
1402 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mpointFH, p_mpoint)
1403 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mpidxfh, p_mpidx)
1404 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.workgrpFH , p_workgroup)
1405 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.serverfh, p_server)
1406 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.sharefh, p_share)
1407 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.userfh, p_user)
1408 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.passwordfh, p_password)
1409 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.spasswordfh, p_spassword)
1410 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.ctoFH, p_cachetimeout)
1411 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.cldFH, p_cachelistings)
1412 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.masterfh, p_master)
1413 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mtypefh, p_mtype)
1414 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.easupportfh, p_easupport)
1415 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.rwfh, p_rw)
1416 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.hashfh, md5.cnt)
1417 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, icons.!passive)
1418 ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", icons.!passive)
1419
1420/* Obsolete fields:
1421 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.memlenfh, p_memlen)
1422 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.logfilefh, p_logfile)
1423 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.loglevelfh, p_loglevel) */
1424 end
1425 if options.!debug == 1 then say time()' '||"_PassiveLoad done"
1426return
1427/*:VRX _PassiveSave
1428*/
1429_PassiveSave:
1430 if options.!debug == 1 then say time()' '||"_PassiveSave started"
1431 ok = VRDelIni( "PassiveConnections", "ALL", settings.!ini )
1432
1433 ok = SysIni(settings.!ini, 'PassiveConnections', 'DELETE:')
1434
1435 CALL VRMethod "CN_CONDET", 'GetRecordList', 'All', 'records.'
1436 cnt = 0
1437 DO i = 1 TO records.0
1438
1439 if VRMethod( "CN_CONDET", "GetFieldData", records.i, CD.StatusFH) = icons.!passive then do
1440 cnt = cnt + 1
1441 resdata = ""
1442 resdata = resdata||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mpointfh)||" "
1443 resdata = resdata||'\\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgrpFH )
1444 resdata = resdata||':'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
1445 resdata = resdata||'\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
1446 resdata = resdata||'@'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
1447 resdata = resdata||';WORKGROUP='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgrpFH )
1448 resdata = resdata||';SERVER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
1449 resdata = resdata||';SHARE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
1450 resdata = resdata||';USER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
1451 resdata = resdata||';PASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.passwordfh)
1452 resdata = resdata||';SPASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.spasswordfh)
1453 resdata = resdata||';MASTER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.masterfh)
1454 resdata = resdata||';MASTERTYPE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mtypefh)
1455/* resdata = resdata||';MEMLEN='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.memlenfh)
1456 resdata = resdata||';LOGFILE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.logfilefh)
1457 resdata = resdata||';LOGLEVEL='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.loglevelfh) */
1458 resdata = resdata||';CTO='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.ctoFH)
1459 resdata = resdata||';CLD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.cldFH)
1460 resdata = resdata||';EASUPPORT='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.easupportfh)
1461 resdata = resdata||' '||VRMethod("CN_CONDET","GetFieldData", records.i, cd.rwfh)
1462 ok = VRSetIni( "PassiveConnections", cnt, resdata, settings.!ini )
1463 END
1464 else iterate
1465 end
1466 if options.!debug == 1 then say time()' '||"_PassiveSave done"
1467return
1468
1469/*:VRX _PrinterInfo
1470*/
1471_PrinterInfo:
1472 if \_SMBpdrInstalled() then do
1473 /* SMB.PDR is not installed */
1474 CALL VRMessage 'Main', NLVGetMessage( 104 ), NLVGetMessage( 5 ), 'E'
1475 end
1476 else do /* SMB.pdr is installed */
1477 /* shared queue name */
1478 p_printer = SMBObj.resname
1479
1480 /* printer server */
1481 capt = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Caption")
1482 parse var Capt p_prtsrv '0D0A'x .
1483 p_prtsrv = strip(p_prtsrv)
1484
1485 /* workgroup of the printer server */
1486 Gparrh = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Parent")
1487 capt = VRMethod("CN_SMBTREE", "GetRecordAttr", GParrh, "Caption")
1488 parse var Capt p_workgroup '0D0A'x .
1489
1490 /* This is the string we will find in case this resource is already connected */
1491 DescStr = translate(p_prtsrv'#'p_printer'#'p_workgroup'#')
1492 say '"'DescStr'"'
1493 LDescStr = length(DescStr)
1494
1495 /* Enumerate all SMB ports */
1496 ok = SysIni('SYSTEM','PM_SPOOLER_PORT',"All:",'ports')
1497 if ports.0 = 0 then do
1498 /* No SMB ports installed */
1499 CALL VRMessage 'Main', NLVGetMessage( 105 ), NLVGetMessage( 5 ), 'E'
1500 end
1501 else do
1502 /* At least 1 SMB port was found - lets check whether it is already connected to our resource */
1503 FoundPort = 0
1504 do I = 1 to ports.0
1505 if left(ports.i,3) = 'SMB' then do
1506 say ports.I
1507 say translate(left(SysIni('SYSTEM','PM_'ports.I,'INITIALIZATION'),LDescStr))
1508 say DescStr
1509 if translate(left(SysIni('SYSTEM','PM_'ports.I,'INITIALIZATION'),LDescStr)) = DescStr then do
1510 OurPort = ports.I
1511 FoundPort = 1
1512 leave
1513 end
1514 end
1515 end
1516 say 'OurPort = "'OurPort'"'
1517 if Foundport then do
1518 ok = SysIni('SYSTEM','PM_SPOOLER_PRINTER',"All:",'printer')
1519 FoundPrinter = 0
1520 do I = 1 to printer.0
1521 prtsummary = SysINi('SYSTEM','PM_SPOOLER_PRINTER',printer.i)
1522 parse var prtsummary port ';'PrinterDriver';'PrinterQueue';' .
1523 say printer.I' 'prtsummary
1524 if port = ourPort then do
1525 PrinterName = SysINi('SYSTEM','PM_SPOOLER_PRINTER_DESCR',printer.i)
1526 parse var Printername Printername ';' .
1527 CALL VRMessage 'Main', PrinterName' ('PrinterQueue') prints to port ' Port' connected to \\'p_workgroup'\'p_prtsrv'\'p_printer, NLVGetMessage( 1 ), 'I'
1528 FoundPrinter = 1
1529 leave
1530 end
1531 end
1532 if FoundPrinter = 0 then do
1533 /* Port installed and configured, but not used by any printer */
1534 CALL VRMessage 'Main', NLVGetMessage( 106 ), NLVGetMessage( 5 ), 'E'
1535 end
1536 end
1537 else do
1538 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
1539 end
1540 end
1541 end
1542return
1543
1544/*:VRX _ShowMsg
1545*/
1546_ShowMsg:
1547 /* preliminary implementation - we just do not ignore it anymore -
1548 - ShowMsg from smbmon/smbusers should become a shared library */
1549 ok = VRSet("DT_StatusBar", "Caption", Msg.Text)
1550return
1551
1552/*:VRX _SmbConfCreateShadowCopy
1553*/
1554_SmbConfCreateShadowCopy:
1555 if options.!debug == 1 then say time()' _SmbConfCreateShadowCopy started'
1556 /* we create a complete version of smb.conf in temporary directory for reading purposes */
1557 /* as we can only determine a default value from this complete version of the file */
1558 /* however it is not desirable to always have a complete copy normally */
1559 ok = SysFileDelete(samba.!shadowsmbconf)
1560 if datatype(log_level) <> "NUM" then log_level = 2
1561 say ' 'samba.!testparmexe' -v -s -d='log_level' 1>'samba.!shadowsmbconf' 2>'TempDir'testparm.stderr'
1562 address cmd samba.!testparmexe' -v -s -d='log_level' 1>'samba.!shadowsmbconf' 2>'TempDir'testparm.stderr'
1563 if options.!debug == 1 then say time()' _SmbConfCreateShadowCopy done'
1564return
1565
1566/*:VRX _SMBpdrInstalled
1567*/
1568_SMBpdrInstalled: procedure
1569 ok = VRGetINI("PM_PORT_DRIVER","SMB","SYSTEM")
1570return (ok <> "")
1571
1572/*:VRX _StemsInit
1573*/
1574_StemsInit:
1575 if options.!debug == 1 then say time()' _StemsInit started'
1576 if options.!debug == 1 then say ' initializing options.'
1577 options.!workgroup = ''
1578 options.!server = ''
1579 options.!share = ''
1580 options.!user = ''
1581 options.!password = ''
1582 options.!spassword = ''
1583 options.!master = ''
1584 options.!mastertype = ''
1585 options.!memlen = '2'
1586 options.!cachetimeout = '10'
1587 options.!cachelistings = '32'
1588 options.!easupport = '1'
1589 options.!readonly = ''
1590 options.!loglevel = 0
1591 options.!logfile = ''
1592
1593 options.!autoload = 0
1594 options.!autoclose = 0
1595 options.!nogui = 0
1596 options.!autostart = 0
1597 options.!editmode = 0
1598 options.!delay = 0
1599 options.!storecreds = 0
1600 options.!timesync = 0
1601 options.!timesrv = ''
1602
1603 options.!tracmark = 0
1604
1605 if options.!debug == 1 then say ' initializing vfs. '
1606 vfs.!drive = ''
1607 vfs.!mountpoint = ''
1608
1609 if options.!debug == 1 then say ' initializing advanced. '
1610 advanced.!browseauth = ''
1611 advanced.!browseimme = ''
1612 advanced.!broadcast = ''
1613 advanced.!special = ''
1614 advanced.!savepassive= ''
1615 advanced.!miniicons = ''
1616
1617 advanced.!easupport = 1
1618 advanced.!readonly = ''
1619 advanced.!alwaysmp = ''
1620 advanced.!cachetimeout = '10'
1621 advanced.!cachelistings = '32'
1622
1623 advanced.!smbconfchanged = 0
1624
1625 /* Obsolete */
1626 advanced.!memlen = ''
1627 advanced.!loglevel = '0'
1628 advanced.!logfile = ''
1629
1630 if options.!debug == 1 then say ' initializing credentials. '
1631 credentials.!username = ""
1632 credentials.!password = ""
1633 credentials.!entered = 0
1634
1635 UserCred = ""
1636 RefreshMode = ""
1637
1638 if options.!debug == 1 then say ' initializing mtype. '
1639 mtype.0 = 4
1640 mtype.1 = NLVGetMessage( 15 )
1641 mtype.2 = NLVGetMessage( 16 )
1642 mtype.3 = NLVGetMessage( 17 )
1643 mtype.4 = NLVGetMessage( 18 )
1644
1645 if options.!debug == 1 then say ' initializing icons. '
1646 icons.!bat = '#1:PMWP.DLL'
1647 icons.!cmd = '#2:PMWP.DLL'
1648 icons.!exe = '#3:PMWP.DLL'
1649 icons.!template = '#10:PMWP.DLL'
1650 icons.!drive = '#16:PMWP.DLL'
1651 icons.!defaultfile = '#24:PMWP.DLL'
1652 icons.!folder = '#26:PMWP.DLL'
1653 icons.!folder_open = '#34:PMWP.DLL'
1654 icons.!machine_awake = '#35:PMWP.DLL'
1655 icons.!machine_sleeping = '#61:PMWP.DLL'
1656 icons.!workgroup = '#62:PMWP.DLL'
1657 icons.!pdc = '#63:PMWP.DLL'
1658 icons.!active = '#64:PMWP.DLL'
1659 icons.!passive = '#68:PMWP.DLL'
1660 icons.!printer = '#65:PMWP.DLL'
1661 icons.!drive_inactive = '#70:PMWP.DLL'
1662 icons.!pdf = '#80'
1663 icons.!spreadsheet = '#82'
1664 icons.!textdocument = '#86'
1665 icons.!framework = '#87'
1666 icons.!image = '#88'
1667 icons.!movie = '#89'
1668 icons.!sound = '#90'
1669 icons.!warpin = '#91'
1670 icons.!zip = '#92'
1671 icons.!view = '#93'
1672 icons.!plaintext = '#94'
1673
1674 p_workgroup = "Unknown"
1675 p_server = "Unknown"
1676 p_share = "Unknown"
1677
1678 if options.!debug == 1 then say time()' _StemsInit done'
1679return
1680/*:VRX _TabbedDialogSetup
1681*/
1682_TabbedDialogSetup:
1683 if options.!debug == 1 then say time()' _TabbedDialogSetup started'
1684
1685 w = VRLoad( "TDL_1", VRWindowPath(), "SW_DIALOG" )
1686 ok = VRMethod( "TDL_1", "InsertPage", w,"+ "NLVGetMessage(13)" ")
1687 ok = VRMethod( "TDL_1", "SetStatusText", 1, NLVGetMessage(132,"1","2"))
1688 w = VRLoad( "TDL_1", VRWindowPath(), "SW_ADVANCED" )
1689 ok = VRMethod( "TDL_1", "InsertPage", w,"- "NLVGetMessage(40)" ")
1690 ok = VRMethod( "TDL_1", "SetStatusText", 2, NLVGetMessage(132,"2","2"))
1691
1692 w = VRLoad( "TDL_1", VRWindowPath(), "SW_SMBTREE" )
1693 ok = VRMethod( "TDL_1", "InsertPage", w,"+ "NLVGetMessage(39)" ")
1694
1695 w = VRLoad( "TDL_1", VRWindowPath(), "SW_CONDET" )
1696 ok = VRMethod( "TDL_1", "InsertPage", w,"+ "NLVGetMessage(63)" ")
1697 w = VRLoad( "TDL_1", VRWindowPath(), "SW_SETTINGS" )
1698 ok = VRMethod( "TDL_1", "InsertPage", w,"+ "NLVGetMessage(47)" ")
1699 w = VRLoad( "TDL_1", VRWindowPath(), "SW_SMBCONF" )
1700 ok = VRMethod( "TDL_1", "InsertPage", w,"- "NLVGetMessage(47)" ")
1701 if options.!debug == 1 then say time()' _TabbedDialogSetup done'
1702return
1703
1704
1705/*:VRX _TabFix
1706*/
1707_TabFix:
1708 ok = VRMethod( "TDL_1", "SetTabText", arg(1), " "strip(VRMethod( "TDL_1", "GetTabText", arg(1)))" ")
1709return
1710
1711/*:VRX _TabsStrip
1712*/
1713_TabsStrip:
1714 ok = VRMethod( "TDL_1", "SetTabText", 1, strip(VRMethod( "TDL_1", "GetTabText", 1)))
1715 ok = VRMethod( "TDL_1", "SetTabText", 2, strip(VRMethod( "TDL_1", "GetTabText", 2)))
1716 ok = VRMethod( "TDL_1", "SetTabText", 3, strip(VRMethod( "TDL_1", "GetTabText", 3)))
1717 ok = VRMethod( "TDL_1", "SetTabText", 4, strip(VRMethod( "TDL_1", "GetTabText", 4)))
1718 ok = VRMethod( "TDL_1", "SetTabText", 5, strip(VRMethod( "TDL_1", "GetTabText", 5)))
1719return
1720
1721/*:VRX _TimeSync
1722*/
1723_TimeSync:
1724 if options.!debug == 1 then say time()' _TimeSync started, "'options.!timesrv'"'
1725 TimeMsg.1 = NLVGetMessage(141)' 'time()
1726 if options.!timesrv <> '' then do
1727 say ' 'samba.!netexe' time set -S 'options.!timesrv
1728 address cmd samba.!netexe' time set -S 'options.!timesrv
1729 end
1730 else do
1731 say ' 'samba.!netexe' time set'
1732 address cmd samba.!netexe' time set'
1733 end
1734 options.!timesync = ''
1735 TimeMsg.2 = NLVGetMessage(142)' 'time()
1736 TimeMsg.0 = 2
1737
1738 Buttons.1 = NLVGetMessage(2)
1739 Buttons.0 = 1
1740 id = VRMessageStem( VRWindow(), TimeMsg. , NLVGetMessage(129) , "Information", "Buttons.", 1, 1 )
1741 if options.!debug == 1 then say time()' _TimeSync done'
1742return
1743
1744/*:VRX _UpdateObject
1745*/
1746_UpdateObject: procedure
1747 Object = arg(1)
1748 ObjValue = arg(2)
1749 if VRGet(Object,"Value") <> ObjValue then ok = VRset(Object,"Value",ObjValue)
1750return
1751
1752/*:VRX _UserCredUpdate
1753*/
1754_UserCredUpdate:
1755 if options.!debug == 1 then say time()' _UserCredUpdate started'
1756 credentials.!username = VRGet("EF_USER","Value")
1757 credentials.!password = VRGet("EF_PASSWORD","Value")
1758
1759 if pos("4OS2", value("COMSPEC",,"OS2ENVIRONMENT")) = 1 | pos(left(credentials.!password,1),'01234567890') > 0
1760 then UserCred = '--user='Credentials.!username'%%'Credentials.!password
1761 else UserCred = '--user='Credentials.!username'%'Credentials.!password
1762
1763 if options.!storecreds = 1 & \(UserCred = 'USERCRED' | UserCred = '' | UserCred = '--user=%' | UserCred = '--user=%%' | UserCred = '-N') then do
1764 ok = _ucSetUc()
1765 ok = VRSet("Pict_PWINMEM","PicturePath","#36")
1766 if options.!debug == 1 then call beep 2400, 10
1767 end
1768 else do
1769 if options.!debug == 1 then call beep 200, 20
1770 ok = VRSet("Pict_PWINMEM","PicturePath","#37")
1771 end
1772 if options.!debug == 1 then say time()' _UserCredUpdate done'
1773return
1774
1775/*:VRX CB_client_lanman_auth_Click
1776*/
1777CB_client_lanman_auth_Click:
1778 advanced.!smbconfchanged = 1
1779return
1780
1781/*:VRX CB_client_NTLMv2_auth_Click
1782*/
1783CB_client_NTLMv2_auth_Click:
1784 advanced.!smbconfchanged = 1
1785
1786 if VRGet("CB_client_NTLMv2_auth","Set") = 0 then do
1787 ok = VRSet("CB_client_lanman_auth","Enabled", 1)
1788 ok = VRSet("CB_client_plaintext_auth","Enabled", 1)
1789 end
1790 else do
1791 ok = VRSet("CB_client_lanman_auth","Enabled", 0)
1792 ok = VRSet("CB_client_lanman_auth","Set", 0)
1793 ok = VRSet("CB_client_plaintext_auth","Enabled", 0)
1794 ok = VRSet("CB_client_plaintext_auth","Set", 0)
1795 end
1796return
1797
1798/*:VRX CB_client_plaintext_auth_Click
1799*/
1800CB_client_plaintext_auth_Click:
1801 advanced.!smbconfchanged = 1
1802return
1803
1804/*:VRX CB_client_use_spnego_Click
1805*/
1806CB_client_use_spnego_Click:
1807 advanced.!smbconfchanged = 1
1808return
1809
1810/*:VRX CB_client_use_spnego_principal_Click
1811*/
1812CB_client_use_spnego_principal_Click:
1813 advanced.!smbconfchanged = 1
1814return
1815
1816/*:VRX CB_DEBUG_Click
1817*/
1818CB_DEBUG_Click:
1819
1820return
1821
1822/*:VRX CB_LOGGING_Click
1823*/
1824CB_LOGGING_Click:
1825 if VRFileExists(SysBootDrive()'\ndpsmb.dbg') then
1826 ok = SysFileDelete(SysBootDrive()'\ndpsmb.dbg')
1827 else do
1828 call lineout SysBootDrive()'\ndpsmb.dbg','EVFS debug flag file'
1829 ok = stream(SysBootDrive()'\ndpsmb.dbg','c','close')
1830 end
1831
1832 CALL VRSet "CB_LOGGING", "Set", VRFileExists(SysBootDrive()'\ndpsmb.dbg')
1833return
1834
1835/*:VRX CB_MOUNT_Change
1836*/
1837CB_MOUNT_Change:
1838 if options.!debug == 1 then say time()' '||"CB_MOUNT_Change started"
1839
1840 mount = VRGet("CB_MOUNT", "Value")
1841
1842 /* Catch empty mount type error */
1843 if mount = "" then do
1844 if mtype.1 <> "" then ok = VRSet("CB_MOUNT", "Value", mtype.1)
1845 if options.!debug == 1 then say time()' '||"CB_MOUNT_Change aborted"
1846 return
1847 end
1848
1849 SELECT
1850 WHEN mount == mtype.1 THEN DO
1851 CALL VRSet "DT_SHARE", "Visible", 1
1852 CALL VRSet "EF_SHARE", "Visible", 1
1853 CALL VRSet "DT_SERVER", "Visible", 1
1854 CALL VRSet "EF_SERVER", "Visible", 1
1855 CALL VRSet "CHK_MTYPE", "Visible", 0
1856 CALL NLVSetText "DT_NETWORK", "Caption", 21
1857 END
1858 WHEN mount == mtype.2 THEN DO
1859 CALL VRSet "DT_SHARE", "Visible", 0
1860 CALL VRSet "EF_SHARE", "Visible", 0
1861 CALL VRSet "DT_SERVER", "Visible", 1
1862 CALL VRSet "EF_SERVER", "Visible", 1
1863 CALL VRSet "CHK_MTYPE", "Visible", 0
1864 CALL NLVSetText "DT_NETWORK", "Caption", 21
1865 END
1866 WHEN mount == mtype.3 THEN DO
1867 CALL VRSet "DT_SHARE", "Visible", 0
1868 CALL VRSet "EF_SHARE", "Visible", 0
1869 CALL VRSet "DT_SERVER", "Visible", 0
1870 CALL VRSet "EF_SERVER", "Visible", 0
1871 CALL VRSet "CHK_MTYPE", "Visible", 0
1872 CALL NLVSetText "DT_NETWORK", "Caption", 21
1873 END
1874 WHEN mount == mtype.4 THEN DO
1875 CALL VRSet "DT_SHARE", "Visible", 0
1876 CALL VRSet "EF_SHARE", "Visible", 0
1877 CALL VRSet "DT_SERVER", "Visible", 0
1878 CALL VRSet "EF_SERVER", "Visible", 0
1879 CALL VRSet "CHK_MTYPE", "Visible", 1
1880 CALL NLVSetText "DT_NETWORK", "Caption", 22
1881 END
1882 OTHERWISE DO
1883 id = VRMessage( "", 'unknown mount type here >>'mount'<< mtype1=>>'mtype.1'<<', "Mount change error", "E", )
1884 END
1885 END
1886 if options.!debug == 1 then say time()' '||"CB_MOUNT_Change done"
1887RETURN
1888
1889/*:VRX CN_CONDET_Click
1890*/
1891CN_CONDET_Click:
1892 /* ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText")) */
1893return
1894
1895/*:VRX CN_CONDET_ContextMenu
1896*/
1897CN_CONDET_ContextMenu:
1898 rh = VRInfo('Record')
1899 if VRMethod( "CN_CONDET", "ValidateRecord", rh) <> 1 then return
1900
1901 /* Hide all context menu entries */
1902 ok = VRSet("Menu_Selected_Remove", "Visible", 0) /* CN_CONDET */
1903 ok = VRSet("Menu_Selected_Retry", "Visible", 0) /* CN_CONDET */
1904 ok = VRSet("Menu_Selected_Connect", "Visible", 0) /* CN_SMBTREE */
1905 ok = VRSet("Menu_Selected_Sep1", "Visible", 0) /* CN_SMBTREE */
1906 ok = VRSet("Menu_Selected_Info", "Visible", 0) /* CN_SMBTREE */
1907 ok = VRSet("Menu_Selected_TimeSync", "Visible", 0) /* CN_SMBTREE */
1908 ok = VRSet("Menu_Selected_Refresh", "Visible", 0) /* CN_SMBTREE */
1909 ok = VRSet("Menu_Selected_Default_Workgroup","Visible", 0) /* CN_SMBTREE */
1910
1911 /* This is the place to enable specific context menu entries */
1912 ok = VRMethod( "CN_CONDET", "GetRecordList", "All", "records." )
1913 ok = VRSet("Menu_Selected_Remove", "Visible", (records.0 <> 0))
1914 ok = VRSet("Menu_Selected_Retry", "Visible", (records.0 <> 0))
1915
1916 if VRMethod( "CN_CONDET", "GetFieldData", rh, CD.StatusFH) = icons.!passive then do
1917 ok = VRSet("Menu_Selected_Retry", "Enabled",1)
1918 ok = VRSet("Menu_Selected_Remove", "Enabled",1)
1919 end
1920 ok = VRMethod( "Menu_Selected", "Popup", , , "", "" )
1921return
1922/*:VRX CN_CONDET_DragStart
1923*/
1924CN_CONDET_DragStart:
1925
1926 obj = VRInfo( "object" )
1927 ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "selrec." )
1928 if selrec.0 = 0 then return
1929
1930 Icon = VRMethod("CN_CONDET", "GetRecordAttr", selrec.1, "Icon")
1931
1932 if Icon = icons.!printer then do /* Printers not supported at the moment */
1933 call beep 4800,100
1934 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
1935 end
1936 else call VRMethod obj, 'StartDrag'
1937return
1938
1939/*:VRX CN_CURRENT_Click
1940*/
1941CN_CURRENT_Click:
1942 if options.!debug == 1 then say time()' CN_CURRENT_Click started'
1943 /* ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText")) */
1944
1945 /* Herwig B. */
1946 CALL VRSet "TM_AUTOCLOSE", "ENABLED", 0
1947 ok = VRSet("Menu_Selected_Default_Workgroup","Visible", 0)
1948
1949 rh = VRInfo('Record')
1950 if VRMethod( "CN_CURRENT", "ValidateRecord", rh) <> 1 then return
1951
1952 data = VRMethod("CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
1953 options.currentdata = data
1954
1955 /* ok = VRset("DT_StatusBar","Caption", data' - 'VRGet("Main", "HintText")) */
1956
1957 PARSE VAR data p_node ';' p_mounts ';' p_string
1958
1959 if options.!debug == 1 then do
1960 say ' data = "'data'"'
1961 say ' p_node = "'p_node'"'
1962 say ' p_mounts = "'p_mounts'"'
1963 say ' p_string = "'p_string'"'
1964 end
1965
1966 if p_string = ""
1967 then infotext = fs.!name' 'fs.!version
1968 else infotext = p_string
1969
1970 if infotext = "" then infotext = " "
1971 CALL VRSet "CN_CURRENT", "Caption", infotext
1972 CALL VRSet "CN_CURRENT", 'HintText',infotext
1973
1974 IF p_mounts > 0 THEN DO
1975 CALL VRSet 'PB_UNMOUNT', 'Enabled', 1
1976 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 1
1977
1978 if pos("*",p_string) > 0 | pos(";",p_string) > 0
1979 then CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
1980 else CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 1
1981 END
1982 ELSE DO
1983 CALL VRSet 'PB_UNMOUNT', 'Enabled', 0
1984 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 0
1985 CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
1986 END
1987
1988 parent = VRMethod("CN_CURRENT", 'GetRecordAttr', rh, 'Parent')
1989
1990 IF parent == '' THEN DO
1991 CALL VRSet 'PB_DETACH', 'Enabled', 1
1992 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 1
1993 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 1
1994/* CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 1 */
1995 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 1
1996/* CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 1 */
1997
1998 END
1999 ELSE DO
2000 CALL VRSet 'PB_DETACH', 'Enabled', 0
2001 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 0
2002 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 0
2003/* CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 0 */
2004 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 0
2005/* CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 0 */
2006 END
2007
2008 parse var p_string p_workgroup'\\'p_server'\'p_share
2009
2010 p_workgroup = strip(p_workgroup,'T',':')
2011
2012 if options.!debug == 1 then do
2013 say ' p_workgroup = "'p_workgroup'"'
2014 say ' p_server = "'p_server'"'
2015 say ' p_share = "'p_share'"'
2016 end
2017
2018 p_server = translate(p_server)
2019
2020 ok = VRSet("EF_NETWORK","Value", p_workgroup)
2021 if p_workgroup <> "" then do
2022 wgh = _GetMachineHandle(p_workgroup)
2023 if wgh = "" then wgh = _AddWorkGroup(p_workgroup)
2024 call _UpdateObject "EF_SERVER", p_server
2025 mh = _GetMachineHandle(p_server)
2026 if mh = "" & p_server <> "*" then do
2027 mh = _AddSleepingMachine(p_server,'',wgh)
2028 machine = p_server
2029 call _RefreshShares
2030 end
2031 ok = VRSet("EF_Share","Value", p_share)
2032 select
2033 when p_workgroup = "*" then ok = VRSet("CB_MOUNT","Value", mtype.4)
2034 when p_server = "*" then ok = VRSet("CB_MOUNT","Value", mtype.3)
2035 when p_share = "*" then ok = VRSet("CB_MOUNT","Value", mtype.2)
2036 otherwise ok = VRSet("CB_MOUNT","Value", mtype.1)
2037 end
2038 end
2039 if options.!debug == 1 then say time()' CN_CURRENT_Click done'
2040RETURN
2041
2042/*:VRX CN_CURRENT_ContextMenu
2043*/
2044CN_CURRENT_ContextMenu: /* PROCEDURE EXPOSE existrec. options. icons. fs. */
2045 if options.!debug == 1 then say time()' '||"CN_CURRENT_ContextMenu started"
2046
2047 CALL VRSet "TM_AUTOCLOSE", "ENABLED", 0
2048
2049 rh = VRInfo('Record')
2050
2051 /* we have to check whether the record still exists because under certain
2052 circumstances the event routine is executed after the record was already
2053 removed */
2054 if VRMethod( "CN_CURRENT", "ValidateRecord", rh) <> 1 then do
2055 if options.!debug == 1 then say time()' '||"CN_CURRENT_ContextMenu aborted"
2056 return
2057 end
2058
2059 data = VRMethod("CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
2060 PARSE VAR data p_node ';' p_mounts ';' p_string
2061
2062 if options.!debug == 1 then do
2063 say ' data = "'data'"'
2064 say ' p_node = "'p_node'"'
2065 say ' p_mounts = "'p_mounts'"'
2066 say ' p_string = "'p_string'"'
2067 end
2068/*
2069 infotext = p_node
2070 DO i = 1 TO p_mounts
2071 infotext = infotext ' ['p_string']'
2072 END
2073*/
2074 if p_string = ""
2075 then infotext = fs.!name' 'fs.!version
2076 else infotext = p_string
2077
2078 if infotext = "" then infotext = " "
2079 CALL VRSet "CN_CURRENT", "Caption", infotext
2080 CALL VRSet "CN_CURRENT", 'HintText',infotext
2081
2082 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 1
2083/* CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 1
2084 CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 1
2085 CALL VRSet 'MENU_CONTEXT_SEP3', 'Visible', 1 */
2086 CALL VRSet 'Menu_Context_Open_Default', "Visible", 1
2087
2088 IF p_mounts > 0 THEN DO
2089 CALL VRSet 'PB_UNMOUNT', 'Enabled', 1
2090 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 1
2091
2092 if pos("*",p_string) > 0 | pos(";",p_string) > 0 then CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
2093 else CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 1
2094 END
2095 ELSE DO
2096 CALL VRSet 'PB_UNMOUNT', 'Enabled', 0
2097 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 0
2098 CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0
2099 END
2100
2101 parent = VRMethod("CN_CURRENT", 'GetRecordAttr', rh, 'Parent')
2102
2103 IF parent == '' THEN DO
2104 CALL VRSet 'PB_DETACH', 'Enabled', 1
2105 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 1
2106 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 1
2107/* CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 1 */
2108 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 1
2109/* CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 1 */
2110/* CALL VRSet 'MENU_CONTEXT_SEP3', 'Visible', 1 */
2111 END
2112 ELSE DO
2113 CALL VRSet 'PB_DETACH', 'Enabled', 0
2114 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 0
2115 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 0
2116/* CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 0 */
2117 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 0
2118/* CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 0 */
2119/* CALL VRSet 'MENU_CONTEXT_SEP3', 'Visible', 0 */
2120 END
2121
2122 ok = VRMethod( "Menu_Context", "Popup", , , "", "" )
2123 if options.!debug == 1 then say time()' '||"CN_CURRENT_ContextMenu done"
2124return
2125
2126/*:VRX CN_CURRENT_DoubleClick
2127*/
2128CN_CURRENT_DoubleClick:
2129 if options.!debug == 1 then say time()' '||"CN_CURRENT_DoubleClick started"
2130
2131 CALL VRSet "TM_AUTOCLOSE", "ENABLED", 0
2132
2133 rh = VRInfo('Record')
2134
2135 /* we have to check whether the record still exists because under certain
2136 circumstances the event routine is executed after the record was already
2137 removed */
2138 if VRMethod( "CN_CURRENT", "ValidateRecord", rh) <> 1 then do
2139 if options.!debug == 1 then say time()' '||"CN_CURRENT_DoubleClick aborted"
2140 return
2141 end
2142
2143 data = VRMethod("CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
2144 PARSE VAR data p_node ';' p_mounts ';' p_string
2145
2146 if options.!debug == 1 then do
2147 say ' data = "'data'"'
2148 say ' p_node = "'p_node'"'
2149 say ' p_mounts = "'p_mounts'"'
2150 say ' p_string = "'p_string'"'
2151 end
2152 call Menu_Context_Open_Default_Click
2153
2154 if options.!debug == 1 then say time()' '||"CN_CURRENT_DoubleClick done"
2155return
2156
2157/*:VRX CN_CURRENT_DragDrop
2158*/
2159CN_CURRENT_DragDrop:
2160 if options.!debug == 1 then say time()' CN_CURRENT_DragDrop started'
2161 ok = VRSet("TM_RefreshCurrentDisplay","Enabled", 0)
2162 if options.!debug == 1 then say " settings.!network = "settings.!network
2163
2164 p_workgroup = ''
2165 p_server = ''
2166 p_share = ''
2167
2168 srcFile = VRInfo( "SourceFile" )
2169 srcCtn = VRInfo( "SourceObject" )
2170 srcRec = VRInfo( "SourceRecord" )
2171 trgCtn = VRInfo( "TargetObject" )
2172 trgRec = VRInfo( "TargetRecord" )
2173
2174 if options.!debug == 1 then do
2175 say ' srcFile = "'srcFile'"'
2176 say ' srcCtn = "'srcCtn'"'
2177 if srcCtn <> "" then say ' srcCtn name = "'VRGet(srcCtn,'Name')'"'
2178 say ' srcRec = "'srcRec'"'
2179 say ' trgCtn = "'trgCtn'"'
2180 if trgCtn <> "" then say ' trgCtn name = "'VRGet(trgCtn,'Name')'"'
2181 say ' trgRec = "'trgRec'"'
2182 end
2183
2184 if srcFile <> "" then do /* A file was dropped onto the container - attempt to load it */
2185 if options.!debug == 1 then say ' Possible profile dropped: "'srcFile'"'
2186
2187 /* was it really a profile ? */
2188 if translate(VRParseFileName(srcFile,'E')) = translate(fs.!profileext) then do /* Yes - load it! */
2189 options.!autoload = 1
2190 Profile = srcFile
2191 call Menu_File_Load_Click
2192 ok = VRSet("EF_NETWORK","Value",options.!workgroup)
2193 end
2194 else do /* No - barf! */
2195 buttons.0 = 1
2196 buttons.1 = NLVGetMessage(9)
2197 ok = VRMessage('Main', NLVGetMessage(103,srcFile ), NLVGetMessage(5), 'E','buttons.')
2198 end
2199 if options.!debug == 1 then say time()' CN_CURRENT_DragDrop done (load profile)'
2200 return
2201 end
2202
2203 ok = VRMethod("CB_MOUNT", "GetStringList", "ShareLevels." )
2204
2205 if VRGet(srcCtn,'Name') = "CN_CONDET" then do
2206 p_mpoint = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.MpointFH)
2207
2208 p_workgroup = VRMethod("CN_CONDET", "GetFieldData", srcRec, cd.workgrpFH )
2209 p_server = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.ServerFH)
2210 p_share = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.ShareFH)
2211 p_user = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.UserFH)
2212 p_password = x2c(VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.SpasswordFH))
2213
2214 ShareLevel = 1
2215 if p_share = "" then ShareLevel = 2
2216 if p_server = "" then ShareLevel = 3
2217 if p_workgroup = "" then ShareLevel = 4
2218
2219 ok = VRSet("CB_MOUNT", "Selected", Sharelevel )
2220 ok = VRset("CB_MOUNT", "Value", mtype.sharelevel)
2221
2222 call _UpdateObject "EF_SERVER", p_server
2223 ok = VRset("EF_SHARE", "Value", p_share)
2224 ok = VRset("EF_NETWORK", "Value", p_workgroup)
2225 ok = VRset("EF_USER", "Value", p_user)
2226 ok = VRset("EF_PASSWORD", "Value", p_password)
2227
2228 parse var p_mpoint p_drv '\' p_dir
2229
2230 p_dir = strip(p_dir,'T','\')
2231
2232 ok = VRset("CB_DRIVES", "Value", p_drv)
2233 ok = VRset("EF_DIRECTORY", "Value", p_dir)
2234 end /* Drag from CN_CONDET */
2235
2236 else do /* Drag from CN_SMBTREE */
2237 call _GetSMBObjectProperties srcRec
2238 select
2239 when SMBObj.udatatype = "WORKGROUP" then do
2240 say "Workgroup dragged!"
2241 p_workgroup = SMBObj.resname
2242 p_server = ""
2243 p_share = ""
2244
2245 ShareLevel = 3
2246 end
2247 when SMBObj.udatatype = "SERVER" then do
2248 say "Server dragged!"
2249 if SMBObj.parentrh <> "" then do /* detect server without workgroup */
2250 p_workgroup = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Caption")
2251 end
2252 p_server = SMBObj.resname
2253 p_share = ""
2254
2255 ShareLevel = 2
2256 end
2257 when SMBObj.udatatype = "DISK" then do
2258 say "Shared disk dragged!"
2259 if SMBObj.gparentrh <> "" then do /* detect share on a server without workgroup */
2260 p_workgroup = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.gparentrh, "Caption")
2261 end
2262 p_server = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.parentrh, "Caption")
2263 parse var p_server p_server '0D0A'x .
2264 p_share = SMBObj.resname
2265
2266 ShareLevel = 1
2267 end
2268 otherwise nop /* Printer */
2269 end
2270 ok = VRSet("EF_NETWORK","Value",p_workgroup)
2271 call _UpdateObject "EF_SERVER", p_server
2272 ok = VRSet("EF_Share","Value", p_share)
2273 end /* Drag from CN_SMBTREE */
2274
2275 if options.!debug == 1 then do
2276 say 'p_workgroup = "'p_workgroup'"'
2277 say 'p_server = "'p_server'"'
2278 say 'p_share = "'p_share'"'
2279 end
2280
2281 ok = VRSet( "CB_MOUNT", "Selected", Sharelevel )
2282
2283 settings.!network = VRGet("EF_NETWORK","Value")
2284 call CB_MOUNT_Change
2285
2286 if trgRec = "" then do
2287 ok = VRMethod("CB_DRIVES", "GetStringList", "freedrives.")
2288 if freedrives.0 > 0
2289 then ok = VRSet("CB_DRIVES","Value", freedrives.1)
2290 else ok = VRSet("CB_DRIVES","Value", "")
2291
2292 ok = VRSet("EF_DIRECTORY","Value", "")
2293 end
2294 else do
2295 TargetString = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Caption")
2296
2297 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Parent")
2298
2299 do while parTrgRH <> ""
2300 partrgCapt = VRMethod(trgCtn, "GetRecordAttr", partrgRH, "Caption")
2301 TargetString = partrgCapt||'\'||TargetString
2302 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", partrgRH , "Parent")
2303 end
2304 say 'TargetString = "'TargetString'"'
2305 ok = VRSet("CB_DRIVES","Value", left(TargetString,2))
2306 ok = VRSet("EF_DIRECTORY","Value", substr(TargetString,4))
2307 end
2308
2309 window = VRLoadSecondary( "SW_MOUNTPOINT", "W" )
2310 if VRGet("CB_DRIVES","Value") = "" then return
2311
2312 window = VRLoadSecondary( "SW_LOGIN", "W" )
2313 if credentials.!entered = 1 then call PB_MOUNT_CLICK
2314
2315 if VRGet(srcCtn,'Name') = "CN_CONDET" & VRMethod( "CN_CONDET", "ValidateRecord", srcRec) = 1 then do
2316 if VRMethod("CN_CONDET", "GetRecordAttr", srcRec, "Icon") = icons.!passive then ok = VRMethod( "CN_CONDET", "RemoveRecord", srcRec)
2317 end
2318 if options.!debug == 1 then say time()' CN_CURRENT_DragDrop done'
2319return
2320/*:VRX CN_SMBTREE_Click
2321*/
2322CN_SMBTREE_Click:
2323 if options.!debug == 1 then say time()' CN_SMBTREE_Click started'
2324 /* ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText")) */
2325
2326 call _dropdeprecated
2327 call _GetSmbObjectProperties VRInfo('Record')
2328 call _ContextMenuSelectedSet
2329
2330 ok = VRset("DT_Statusbar", "Caption", SMBObj.udatamsg)
2331
2332 if options.!debug == 1 then say time()' CN_SMBTREE_Click done'
2333return
2334/*:VRX CN_SMBTREE_ContextMenu
2335*/
2336CN_SMBTREE_ContextMenu:
2337 if options.!debug == 1 then say time()' CN_SMBTREE_ContextMenu started'
2338
2339 call _dropdeprecated
2340 call _GetSmbObjectProperties VRInfo('Record')
2341
2342 call _ContextMenuSelectedSet
2343 ok = VRMethod( "Menu_Selected", "Popup", , , "", "" )
2344
2345 if options.!debug == 1 then say time()' CN_SMBTREE_ContextMenu done'
2346return
2347/*:VRX CN_SMBTREE_DoubleClick
2348*/
2349CN_SMBTREE_DoubleClick:
2350 if options.!debug == 1 then say time()' CN_SMBTREE_DoubleClick started'
2351
2352 call _dropdeprecated
2353 call _GetSmbObjectProperties VRInfo('Record')
2354
2355/* if options.!debug == 1 then say time()' CN_SMBTREE_DoubleClick done'
2356return */
2357 /* Enable last 2 lines for 2.0.x (to disable on the fly browsing) */
2358
2359 if options.!debug == 1 then say ' Browsing "'SMBObj.udatatype'"'
2360
2361 If SMBObj.udatatype = "DIRECTORY" then do
2362 BrowsePath = _browsebuildpath(SMBObj.rh)
2363
2364 call _BrowseResetObject(SmbObj.rh)
2365
2366 parse var browsepath '\\'machine'\'sharename '\' browsepath
2367 browsepath = browsepath'\*'
2368
2369 call _BrowseDirectory
2370 end
2371
2372 If SMBObj.udatatype = "FILE" then do
2373 BrowsePath = _browsebuildpath(SMBObj.rh)
2374 call _BrowseResetObject(SmbObj.rh)
2375
2376 parse var browsepath '\\'machine'\'sharename '\' browsepath
2377
2378 OpenOk = _browseobjectopen(machine,sharename,browsepath)
2379
2380 if \OpenOK then do
2381 say " Not connected - trying to connect"
2382 ok = VRMethod( "CN_SMBTREE", "SetRecordAttr", sharerh, "Selected", 1)
2383 call PB_SMBTREE_CONNECT_Click
2384 ok = VRMethod( "CN_SMBTREE", "SetRecordAttr", SMBObj.rh, "Selected", 1)
2385
2386 OpenOk = _browseobjectopen(machine,sharename,browsepath)
2387
2388 if \OpenOk then do
2389 say " Not connected - cannot open - aborting!"
2390 end
2391 end
2392 end
2393
2394 if SMBObj.udatatype = "DISK" then do
2395 machine = VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.parentrh,"Caption")
2396 parse var machine machine '0D0A'x .
2397 machine = strip(machine)
2398
2399 call _BrowseResetObject(SmbObj.rh)
2400
2401 sharename = SMBObj.resname
2402 BrowsePath = ""
2403
2404 call _BrowseDirectory
2405 end
2406 if options.!debug == 1 then say time()' CN_SMBTREE_DoubleClick done'
2407return
2408/*:VRX CN_SMBTREE_DragFile
2409*/
2410CN_SMBTREE_DragFile:
2411 if options.!debug == 1 then say time()' CN_SMBTREE_DragFile started'
2412
2413 obj = VRInfo( "object" )
2414
2415 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "SelRH." )
2416 if SelRH.0 = 0 then do
2417 if options.!debug == 1 then say time()' CN_SMBTREE_DragStart aborted'
2418 return
2419 end
2420
2421 call _dropdeprecated
2422 call _GetSMBObjectProperties SelRH.1
2423
2424 select
2425 when SMBObj.udatatype = "WORKGROUP" | SMBObj.udatatype = "SERVER" | SMBObj.udatatype = "DISK" then do
2426 call VRMethod obj, 'StartDrag'
2427 end
2428 when SMBObj.udatatype = "PRINTER" then do
2429 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
2430 end
2431 otherwise nop /* FILE DIRECTORY */
2432 end
2433
2434 if options.!debug == 1 then say time()' CN_SMBTREE_DragFile done'
2435return
2436
2437/*:VRX CN_SMBTREE_DragStart
2438*/
2439CN_SMBTREE_DragStart:
2440 if options.!debug == 1 then say time()' CN_SMBTREE_DragStart started'
2441
2442 obj = VRInfo( "object" )
2443
2444 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "SelRH." )
2445 if SelRH.0 = 0 then do
2446 if options.!debug == 1 then say time()' CN_SMBTREE_DragStart aborted'
2447 return
2448 end
2449
2450 call _dropdeprecated
2451 call _GetSMBObjectProperties SelRH.1
2452
2453 select
2454 when SMBObj.udatatype = "WORKGROUP" | SMBObj.udatatype = "SERVER" | SMBObj.udatatype = "DISK" then do
2455 call VRMethod obj, 'StartDrag'
2456 end
2457 when SMBObj.udatatype = "PRINTER" then do
2458 CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E'
2459 end
2460 otherwise nop /* FILE DIRECTORY */
2461 end
2462
2463 if options.!debug == 1 then say time()' CN_SMBTREE_DragStart done'
2464return
2465/*:VRX CreateObject
2466*/
2467CreateObject: procedure
2468 Parse Arg Class, Title, Location, Setup, Collision
2469 /* say 'Creating ['Title']' */
2470say Setup
2471 rc = SysCreateObject( Class, Title, Location, Setup, Collision )
2472 If rc <> 1 Then do
2473 Msg.Text = ' > failed to create ['Title' | 'Class'] at location ['Location']'
2474 Msg.Type = 'Error'
2475 say Msg.Text
2476 end
2477return rc
2478/*:VRX DT_STATUSBAR_ContextMenu
2479*/
2480DT_STATUSBAR_ContextMenu:
2481 ok = VRSet("DT_STATUSBAR","Caption", VRGet("Main", "HintText"))
2482return
2483
2484/*:VRX EF_PASSWORD1_KeyPress
2485*/
2486EF_PASSWORD1_KeyPress:
2487 if options.!debug == 1 then say time()' EF_PASSWORD1_KeyPress started'
2488 obj = VRInfo( "Object" )
2489 keystr = VRGet( obj, "KeyString" )
2490/* say keystr */
2491 select
2492 when keystr = "{Enter}" then call PB_LOGIN_OK_Click
2493 when keystr = "{Newline}" then call PB_LOGIN_OK_Click
2494 when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click
2495 otherwise nop
2496 end
2497 if options.!debug == 1 then say time()' EF_PASSWORD1_KeyPress done'
2498return
2499
2500/*:VRX EF_PASSWORD_Change
2501*/
2502EF_PASSWORD_Change:
2503 Now = VRGet("EF_PASSWORD","value")
2504 if Now = "" | Now = LastPassword then return
2505 ok = SysSleep(1)
2506 LastPassword = Now
2507 if Now <> VRGet("EF_PASSWORD","value") then return
2508 call _UserCredUpdate
2509return
2510
2511/*:VRX EF_SERVER_Change
2512*/
2513EF_SERVER_Change:
2514 if options.!debug == 1 then say time()' EF_SERVER_Change started'
2515 Now = VRGet("EF_SERVER","value")
2516
2517 if Now = "" | Now = LastServer then return
2518 ok = SysSleep(2)
2519 if Now <> VRGet("EF_SERVER","value") then return
2520
2521 IF options.!editmode = 1 then return
2522
2523 /* Do nothing for incomplete IP addresses */
2524 if strip(translate(VRGet("EF_SERVER","value"),copies(' ',11),'01234567890.')) = "" then do /* got an IP address */
2525 if \_IsValidIPAddress(VRGet("EF_SERVER","value")) then return /* it is invalid or incomplete */
2526 end
2527
2528 /* do nothing if a workgroup was mounted */
2529 if VRGet("EF_SERVER","value") = "*" then return
2530
2531 machine = VRGet("EF_SERVER","value")
2532 ok = VRSet("EF_SHARE","Value", "")
2533 ok = VRMethod("EF_SHARE","Reset")
2534
2535 rh = _GetMachineHandle(machine)
2536 if rh <> "" then do
2537 call _GetSMBObjectProperties rh
2538 if SMBObj.parentrh = ""
2539 then ok = VRSet("EF_NETWORK","Value", "") /* The workgroup might be unknown at this moment */
2540 else ok = VRSet("EF_NETWORK","Value", VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.parentRH,"Caption"))
2541
2542 call _GetSMBObjectShares SMBObj.rh
2543
2544 if SMBObj.shares.0 > 0 then do
2545 ok = VRMethod("EF_SHARE", "AddStringList", "SMBObj.shares.")
2546 end
2547 end
2548 else do
2549 call _RefreshWorkgroups
2550 smbtree.!machine = _AddSleepingMachine(machine,"","")
2551 call _UserCredUpdate
2552 call _RefreshShares
2553 ok = VRSet( "CN_smbtree", "Painting", 1 )
2554
2555 ok = VRSet("Main", 'Pointer', '<default>' )
2556 ok = VRSet("CN_smbtree","Enabled", 1)
2557 ok = VRSet("TM_Throbber","Enabled", 0)
2558 ok = VRSet("Pict_Throbber","Visible", 0)
2559 end
2560
2561 LastServer = VRGet("EF_SERVER","value")
2562 if options.!debug == 1 then say time()' EF_SERVER_Change done'
2563return
2564
2565/*:VRX EF_USER1_KeyPress
2566*/
2567EF_USER1_KeyPress:
2568 if options.!debug == 1 then say time()' EF_USER1_KeyPress started'
2569 obj = VRInfo( "Object" )
2570 keystr = VRGet( obj, "KeyString" )
2571 say keystr
2572 select
2573 when keystr = "{Enter}" then ok = VRMethod( "EF_Password1", "SetFocus" )
2574 when keystr = "{Newline}" then ok = VRMethod( "EF_Password1", "SetFocus" )
2575 when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click
2576 otherwise nop
2577 end
2578 if options.!debug == 1 then say time()' EF_USER1_KeyPress done'
2579return
2580
2581/*:VRX EF_USER_Change
2582*/
2583EF_USER_Change:
2584 Now = VRGet("EF_USER","value")
2585 if Now = "" | Now = LastUser then return
2586 ok = SysSleep(1)
2587 LastUser = Now
2588 if Now <> VRGet("EF_USER","value") then return
2589 call _UserCredUpdate
2590return
2591
2592/*:VRX EF_WINS_SERVER_Change
2593*/
2594EF_WINS_SERVER_Change:
2595 advanced.!smbconfchanged = 1
2596return
2597
2598/*:VRX Fini
2599*/
2600Fini:
2601 window = VRWindow()
2602 call VRSet window, "Visible", 0
2603 drop window
2604return 0
2605
2606/*:VRX GetChildren
2607*/
2608GetChildren: PROCEDURE EXPOSE existrec. exc options. icons. fs. cd. samba.
2609 if options.!debug == 1 then say time()' GetChildren started'
2610 PARSE ARG node, parec
2611
2612 CALL _Dynamic "CALL "fs.!prefix"RxGetMount node, 'info.', 'points.', 'res.'"
2613
2614 IF info.2 > 0 THEN icon = icons.!active
2615 ELSE icon = icons.!passive
2616
2617 rh = VRMethod("CN_CURRENT", 'AddRecord', parec, 'Last', info.0, icon )
2618 IF rh == '' | datatype(res.0) <> "NUM" THEN RETURN
2619
2620 exc = exc + 1
2621 existrec.exc = rh
2622 userdata = node';'info.2
2623 DO i = 1 TO res.0
2624 userdata = ParseResourceData( userdata, res.i )
2625 END
2626 if userdata = "UNKNOWN" then ok = VRMethod("CN_CURRENT", 'RemoveRecord', rh)
2627 else do
2628 CALL VRMethod "CN_CURRENT", 'SetRecordAttr', rh, 'UserData', userdata
2629 if options.currentdata = userdata then ok = VRMethod("CN_CURRENT", 'SetRecordAttr', rh, 'Selected', 1)
2630 end
2631
2632 DO i = 1 TO points.0
2633 childnode = node || points.i || '\'
2634 CALL GetChildren childnode, rh
2635 END
2636 if options.!debug == 1 then say time()' GetChildren done'
2637RETURN
2638
2639/*:VRX GetMountPoints
2640*/
2641GetMountPoints: PROCEDURE EXPOSE existrec. options. icons. fs. cd. samba.
2642 if options.!debug == 1 then say time()' GetMountPoints started'
2643/* CALL VRSet "CN_CURRENT", 'Painting', 0 */
2644/* if options.!debug == 1 then say time()' '||"GetMountPoints: SysDriveMap(USED) started" */
2645 drvs = SysDriveMap('C:', 'USED') /* was "REMOTE" */
2646/* if options.!debug == 1 then say time()' '||"GetMountPoints: SysDriveMap(USED) done" */
2647 ac = 0
2648 DO i = 1 TO WORDS( drvs )
2649 fs = TRANSLATE( SysFileSystemType( WORD( drvs, i )))
2650 IF fs == fs.!fileSystemtype THEN DO
2651 ac = ac + 1
2652 attached.ac = WORD( drvs, i )
2653 END
2654 END
2655 attached.0 = ac
2656
2657 exc = 0
2658 DO i = 1 TO attached.0
2659 node = attached.i'\'
2660
2661 CALL VRMethod 'CB_DRIVES', 'AddString', attached.i
2662
2663 CALL _Dynamic "CALL "fs.!prefix"RxGetMount node, 'info.', 'points.', 'res.'"
2664
2665 IF info.2 > 0 THEN icon = icons.!drive
2666 ELSE icon = icons.!drive_inactive
2667
2668 rh = VRMethod("CN_CURRENT", 'AddRecord',, 'Last', attached.i, icon )
2669 IF rh == '' THEN ITERATE
2670
2671 exc = exc + 1
2672 existrec.exc = rh
2673 userdata = node';'info.2
2674 DO j = 1 TO res.0
2675 userdata = ParseResourceData( userdata, res.j )
2676 END
2677/* if options.!debug == 1 then say ' "'attached.i'" "'userdata'"' */
2678 CALL VRMethod "CN_CURRENT", 'SetRecordAttr', rh, 'UserData', userdata /* , 'FileName', 'TESTER.EVP' */
2679 if options.currentdata = userdata then ok = VRMethod("CN_CURRENT", 'SetRecordAttr', rh, 'Selected', 1)
2680
2681 CALL VRMethod "CN_CURRENT", 'SetRecordAttr', rh, 'Expanded', 1
2682
2683 DO j = 1 TO points.0
2684 childnode = node || points.j || '\'
2685 CALL GetChildren childnode, rh
2686 END
2687
2688 END
2689 existrec.0 = exc
2690/* CALL VRSet "CN_CURRENT", 'Painting', 1 */
2691 if options.!debug == 1 then say time()' '||"GetMountPoints done"
2692RETURN
2693
2694/*:VRX Halt
2695*/
2696Halt:
2697 signal _VREHalt
2698return
2699
2700/*:VRX Init
2701*/
2702Init:
2703/* Herwig */
2704/* CALL VRSet 'Console', 'WindowListTitle', '' */
2705
2706 window = VRWindow()
2707 call VRSet window, "Visible", 0
2708 call VRMethod window, "Activate"
2709 drop window
2710
2711RETURN
2712
2713/*:VRX LoadFileSysFuncs
2714*/
2715LoadFileSysFuncs:
2716 if options.!debug == 1 then say time()' LoadFileSysFuncs() started'
2717
2718 Fatal = 1
2719 RestartCount = 0
2720 FoundEVFS = 1
2721 FoundND = 1
2722
2723 program = VRGet("Application", "Program")
2724 if program = "" then parse source . . program
2725 say "Program = '"program"'"
2726 program = translate(VRParseFileName(Program,'N'))
2727 say "Program = '"program"'"
2728
2729 if SysSearchPath("PATH", "EVFSCTL.EXE") = "" | program = "SMBGUI" then do
2730 FoundEVFS = 0
2731 ForceNDFS = 1
2732 end
2733
2734CtlRestart:
2735 if \ForceNDFS then signal NoNetDrive
2736
2737ForceNDFS:
2738 if options.!debug == 1 then say ' NDFS check entered'
2739 call RxFuncAdd 'NdRxLoadFuncs', 'NDCALLS', 'NdRxLoadFuncs'
2740 SIGNAL ON SYNTAX NAME NoNetdrive
2741 call NdRxLoadFuncs
2742 FoundND = 1
2743 SIGNAL OFF SYNTAX
2744 fs.!prefix = 'ND'
2745 fs.!fileSystemtype = "NDFS32"
2746 fs.!profileext = "ndc"
2747 signal CommonToBothFS
2748NoNetdrive:
2749 if options.!debug == 1 then say ' NDFS not found'
2750 CALL RxFuncAdd 'EvfsRxLoadFuncs', 'EVFSCALL.DLL', 'EvfsRxLoadFuncs'
2751 SIGNAL ON SYNTAX NAME NoEVFSCALL
2752 CALL EvfsRxLoadFuncs
2753 FoundEVFS = 1
2754 SIGNAL OFF SYNTAX
2755 fs.!prefix = 'EVFS'
2756 fs.!fileSystemtype = "EVFS"
2757 fs.!profileext = "evp"
2758CommonToBothFS:
2759 if options.!debug == 1 then say ' Common version check'
2760 CALL _Dynamic "fsstat = "fs.!prefix"RxQueryIFS()"
2761 if fsstat = 252 then CALL _Dynamic "Found"fs.!prefix" = 0"
2762
2763 if word(fsstat,1) = '0' then do
2764 PARSE VAR fsstat '0 'fsname fsver fsctl .
2765 fs.!name = fsname
2766 fs.!version = fsver
2767
2768 if options.!debug == 1 then DO
2769 say ' fs.!prefix = 'fs.!prefix
2770 say ' fs.!name = 'fs.!Name
2771 say ' Version = 'fsver
2772 say ' fsctl = 'fsctl
2773 end
2774 end
2775 else do
2776 if FoundND = 0 & FoundEVFS = 0 then do
2777 CALL VRMessage 'Main', 'FATAL: Neither EVFS nor Netdrive found: 'fs.!prefix'RxQueryIFS()='fsstat, NLVGetMessage( 5 ), 'E'
2778 signal Halt
2779 end
2780 signal ForceNDFS
2781 end
2782 IF fsctl \= 1 THEN DO
2783 if ReStartCount = 0 then do
2784 'detach 'fs.!prefix'ctl.exe'
2785 RestartCount = 1
2786 ok = SysSleep(1)
2787 signal CtlRestart
2788 end
2789 else do
2790 CALL VRMessage 'Main', NLVGetMessage( 101 ), NLVGetMessage( 5 ), 'E'
2791 signal Halt
2792 end
2793 END
2794
2795 Fatal = 0
2796
2797 if options.!debug == 1 then say time()' LoadFileSysFuncs() done'
2798return
2799
2800/*:VRX Main_Close
2801*/
2802Main_Close:
2803 CALL Quit
2804RETURN
2805
2806/*:VRX Main_Create
2807*/
2808Main_Create:
2809 options.!debug = 1
2810 if options.!debug == 1 then do
2811 ok = VRRedirectStdIO("ON")
2812 say time()' Main_Create started'
2813 end
2814 else ok = VRRedirectStdIO("OFF")
2815
2816 call _InitTempDir
2817 call _LoadOtherFuncs
2818
2819 call NLVSetup
2820 call _StemsInit
2821
2822 call _TabbedDialogSetup
2823 call _ContainersInit
2824 call _GUIInit
2825
2826 CALL _ParseCommandLine
2827
2828 CALL LoadFileSysFuncs
2829
2830 CALL _CltInit
2831
2832 CALL _INILoad
2833
2834 call _TabFix 1
2835 call SW_ADVANCED_Init_Content
2836 call SW_SMBTREE_Init_Content
2837 call SW_CONDET_Init_Content
2838 call SW_SETTINGS_Init_Content
2839
2840 CALL Refresh
2841
2842 if advanced.!savepassive == 1 then CALL _PassiveLoad
2843
2844 IF options.!timesync == 1 THEN CALL _TimeSync
2845
2846 IF options.!autoload == 1 THEN CALL Menu_File_Load_Click
2847
2848 CALL VRSet "CB_MOUNT", "Selected", 1
2849 CALL VRSet "CB_DRIVES", "Selected", 1
2850 IF options.!autoclose == 1
2851 THEN CALL TM_AutoClose_Trigger
2852 ELSE do
2853 if advanced.!browseauth == 1 then do
2854 /* FIXME: unclear why we have to do the following 4 lines here */
2855 call SW_SETTINGS_Init
2856 call SW_SETTINGS_Init_Content
2857 call SW_ADVANCED_Init
2858 call SW_ADVANCED_Init_Content
2859
2860 window = VRLoadSecondary( "SW_LOGIN", "W" )
2861 call Main_Resize
2862 end
2863 if advanced.!browseimme == 1 then call PB_SMBTREE_REFRESH_Click
2864 end
2865
2866 if options.!debug == 1 then say time()' Main_Create done'
2867return
2868
2869/*:VRX Main_KeyPress
2870*/
2871Main_KeyPress:
2872 key = VRGet('Main', 'KeyString')
2873 IF key == '{F5}' THEN CALL Refresh
2874RETURN
2875
2876/*:VRX Main_Resize
2877*/
2878Main_Resize:
2879 if options.!debug == 1 then say time()' Main_Resize started'
2880 ok = VRset("Main","Painting", 0)
2881
2882 /* Basic measurements */
2883 main_iwidth = VRGet("Main","InteriorWidth") /* Width of window client-area */
2884 main_iheight = VRGet("Main","InteriorHeight") /* Height of window client-area */
2885
2886/** This caused weird resizing glitches, horrible jittering, etc. Instead,
2887 ** what we now do (further down) is set a minimum size in twips for the right
2888 ** pane, below which it simply stops resizing and switches to clipping. (The
2889 ** left pane resizes all its controls dynamically anyway.) This better matches
2890 ** standard application behaviour, and makes resizing behave more smoothly.
2891 *
2892 * if VRMethod( "Screen", "TwipsToPixels", main_iheight) < 600 then
2893 * ok = VRSet("Main","Height",VRMethod( "Screen", "PixelsToTwips", 580))
2894 * if VRMethod( "Screen", "TwipsToPixels", main_iwidth) < 730 then
2895 * ok = VRSet("Main","Width", VRMethod( "Screen", "PixelsToTwips", 730))
2896 */
2897
2898 sbar_height = VRGet("GB_STATUSBAR","Height") /* Height of status-bar */
2899 split_left = VRGet("SPLIT_Main","Left") /* Position of the left edge of the split-bar */
2900 marginx2 = margin * 2 /* Common margin around controls */
2901 pbtn_height = 400 /* Height of the panels' internal button areas */
2902
2903 pane_height = main_iheight - sbar_height - (margin * 4) /* Height of a split-bar panel */
2904 lpane_width = split_left - margin /* Width of the left split-bar panel */
2905 rpane_width = main_iwidth - split_left - 60 - margin /* Width of the right split-bar panel */
2906
2907 /* Tabbed Dialog = right pane */
2908 ok = VRset("TDL_1", "Top", marginx2)
2909 ok = VRset("TDL_1", "Left", split_left + 60)
2910 ok = VRset("TDL_1", "Width", rpane_width )
2911 ok = VRset("TDL_1", "Height", pane_height )
2912
2913 /* Current Panel */
2914 ok = VRSet("GB_CURRENT", "Visible", 1 )
2915 ok = VRSet("GB_CURRENT", "Top", marginx2 )
2916 ok = VRSet("GB_CURRENT", "Left", margin )
2917 ok = VRSet("GB_CURRENT", "Width", lpane_width )
2918 ok = VRSet("GB_CURRENT", "Height", pane_height )
2919
2920 ok = VRset("GB_CURRENT3", "Top", margin )
2921 ok = VRset("GB_CURRENT3", "Left", margin )
2922 ok = VRset("GB_CURRENT3", "Height", 245 )
2923 ok = VRset("GB_CURRENT3", "Width", lpane_width - marginx2)
2924
2925 ok = VRset("DT_CURRENT", "Top", 8 )
2926 ok = VRset("DT_CURRENT", "Left", 8 )
2927 ok = VRset("DT_CURRENT", "Height", 213 )
2928 ok = VRset("DT_CURRENT", "Width", (lpane_width - marginx2) - 24 )
2929
2930 ok = VRset("GB_CURRENT2", "Left", margin )
2931 ok = VRset("GB_CURRENT2", "Top", 245 + marginx2 )
2932 ok = VRset("GB_CURRENT2", "Width", lpane_width - marginx2)
2933 ok = VRset("GB_CURRENT2", "Height", pane_height - (margin * 5) - pbtn_height - 245 )
2934
2935 ok = VRset("CN_CURRENT", "Top", margin )
2936 ok = VRset("CN_CURRENT", "Left", margin )
2937 ok = VRset("CN_CURRENT", "Width", VRGet("GB_CURRENT2","Width") - marginx2)
2938 ok = VRset("CN_CURRENT", "Height", VRGet("GB_CURRENT2","Height") - marginx2)
2939
2940 ok = VRset("PB_DETACH", "Left", margin )
2941 ok = VRset("PB_DETACH", "Top", pane_height - pbtn_height - marginx2 )
2942 ok = VRset("PB_DETACH", "Width", min((lpane_width-margin*3) % 2, 1313) )
2943 ok = VRset("PB_UNMOUNT", "Left", VRGet("PB_DETACH","Width") + marginx2)
2944 ok = VRset("PB_UNMOUNT", "Top", pane_height - pbtn_height - marginx2 )
2945 ok = VRset("PB_UNMOUNT", "Width", min((lpane_width-margin*3) % 2, 1313) )
2946
2947 /* Splitbar - reduced in size to make it more noticable */
2948 ok = VRset("SPLIT_Main", "Visible", 1 )
2949 ok = VRset("SPLIT_Main", "Top", marginx2 + (pane_height-1200)%2 )
2950 ok = VRset("SPLIT_Main", "Height", 1200 /* pane_height */ )
2951
2952 /* Statusbar */
2953 ok = VRSet("GB_STATUSBAR", "Left", margin )
2954 ok = VRSet("GB_STATUSBAR", "Top", main_iheight - sbar_height - margin )
2955 ok = VRSet("GB_STATUSBAR", "Width", lpane_width + 50 + rpane_width )
2956
2957 ok = VRset("DT_STATUSBAR", "Top", 12 )
2958 ok = VRset("DT_STATUSBAR", "Left", 12 )
2959 ok = VRset("DT_STATUSBAR", "Height", VRGet("GB_STATUSBAR","Height") -24 )
2960 ok = VRset("DT_STATUSBAR", "Width", (lpane_width + 50 + rpane_width) - 24 )
2961
2962 /* Modified for notebook pages */
2963 pane_height = marginx2 + pane_height -1180
2964 rpane_width = marginx2 + rpane_width -760
2965 /* Use this as the width for the container pages, which don't have as strict a minimum width */
2966 rcnr_width = rpane_width
2967
2968 /* Minimum size of right panel (based on SW_DIALOG which is the largest) */
2969 if pane_height < 5360 then pane_height = 5360
2970 if rpane_width < 6010 then rpane_width = 6010
2971
2972 /* Dialog page */
2973 ok = VRSet("GB_DIALOG", "Top", margin /* marginx2 */ )
2974 ok = VRSet("GB_DIALOG", "Left", margin /* marginx2 */ /* split_left + 60 */ )
2975 ok = VRset("GB_DIALOG", "Height", pane_height )
2976 ok = VRset("GB_DIALOG", "Width", rpane_width )
2977
2978 ok = VRset("PB_MOUNT", "Left", margin )
2979 ok = VRset("PB_MOUNT", "Top", pane_height - pbtn_height - marginx2)
2980 ok = VRset("PB_EDIT_CANCEL", "Left", VRGet("PB_MOUNT","Width") + marginx2)
2981 ok = VRset("PB_EDIT_CANCEL", "Top", pane_height - pbtn_height - marginx2)
2982
2983 ok = VRset("PB_DIALOG_HELP", "Left", rpane_width - marginx2 - VRGet("PB_DIALOG_HELP","Width") + 24)
2984 ok = VRset("PB_DIALOG_HELP", "Top", pane_height - pbtn_height - marginx2)
2985
2986 ok = VRset("GB_SHARE", "Left", margin )
2987 ok = VRset("GB_SHARE", "Top", marginx2 /* 245 + marginx2 */ )
2988 ok = VRset("GB_SHARE", "Height", 2252 )
2989 ok = VRset("GB_SHARE", "Width", rpane_width - marginx2 )
2990
2991 ok = VRset("GB_AUTH", "Left", margin )
2992 ok = VRset("GB_AUTH", "Top", margin * 3 + VRGet("GB_SHARE","Height") /* 245 + (margin * 3) + VRGet("GB_SHARE","Height") */ )
2993 ok = VRset("GB_AUTH", "Width", rpane_width - marginx2 )
2994
2995 ok = VRset("GB_MPOINT","Left", margin )
2996 ok = VRset("GB_MPOINT","Top", /* 245 + */ (margin * 4) + VRGet("GB_SHARE","Height") + VRGet("GB_AUTH","Height"))
2997 ok = VRset("GB_MPOINT","Width", rpane_width - marginx2 )
2998
2999 /* Advanced page */
3000 ok = VRSet("GB_ADVANCED", "Top", margin /* marginx2 */ )
3001 ok = VRSet("GB_ADVANCED", "Left", margin /* marginx2 */ /* split_left + 60 */ )
3002 ok = VRset("GB_ADVANCED", "Height", pane_height )
3003 ok = VRset("GB_ADVANCED", "Width", rpane_width )
3004
3005 ok = VRset("GB_ADVANCED2", "Left", margin )
3006 ok = VRset("GB_ADVANCED2", "Top", /* 245 + */ marginx2)
3007 ok = VRset("GB_ADVANCED2", "Width", rpane_width - marginx2)
3008 ok = VRset("GB_ADVANCED2", "Height", pane_height - (margin * 5) - pbtn_height /* - 245 */ )
3009
3010 ok = VRset("PB_ADVANCED_APPLY", "Left", margin )
3011 ok = VRset("PB_ADVANCED_APPLY", "Top", pane_height - pbtn_height - marginx2)
3012 ok = VRset("PB_ADVANCED_UNDO", "Left", VRGet("PB_SMBTREE_CONNECT","Width") + marginx2)
3013 ok = VRset("PB_ADVANCED_UNDO", "Top", pane_height - pbtn_height - marginx2)
3014 ok = VRset("PB_ADVANCED_HELP", "Left", rpane_width - marginx2 - VRGet("PB_SMBTREE_HELP","Width") + 24)
3015 ok = VRset("PB_ADVANCED_HELP", "Top", pane_height - pbtn_height - marginx2)
3016
3017 /* SMBTree page */
3018 ok = VRSet("GB_SMBTREE", "Top", margin /* x2 */ )
3019 ok = VRSet("GB_SMBTREE", "Left", margin /* x2 */ /* split_left + 60 */ )
3020 ok = VRset("GB_SMBTREE", "Height", pane_height )
3021 ok = VRset("GB_SMBTREE", "Width", rcnr_width )
3022
3023 ok = VRset("GB_SMBTREE2","Left", margin )
3024 ok = VRset("GB_SMBTREE2","Top", /* 45 + */ marginx2 )
3025 ok = VRset("GB_SMBTREE2","Width", rcnr_width - marginx2)
3026 ok = VRset("GB_SMBTREE2","Height", pane_height - (margin * 5) - pbtn_height /* - 245 */ )
3027
3028 ok = VRset("CN_SMBTREE", "Top", margin )
3029 ok = VRset("CN_SMBTREE", "Left", margin )
3030 ok = VRset("CN_SMBTREE", "Width", VRGet("GB_SMBTREE2","Width") - marginx2)
3031 ok = VRset("CN_SMBTREE", "Height", VRGet("GB_SMBTREE2","Height") - marginx2)
3032
3033 ok = VRset("PB_SMBTREE_CONNECT", "Left", margin )
3034 ok = VRset("PB_SMBTREE_CONNECT", "Top", pane_height - pbtn_height - marginx2)
3035 ok = VRset("PB_SMBTREE_REFRESH", "Left", VRGet("PB_SMBTREE_CONNECT","Width") + marginx2)
3036 ok = VRset("PB_SMBTREE_REFRESH", "Top", pane_height - pbtn_height - marginx2)
3037
3038 hlpmin = VRGet("PB_SMBTREE_REFRESH", "Left") + VRGet("PB_SMBTREE_REFRESH","Width") + marginx2
3039 hlppos = rcnr_width - marginx2 - VRGet("PB_SMBTREE_HELP","Width") + 24
3040 IF hlppos < hlpmin THEN hlppos = hlpmin
3041
3042 ok = VRset("PB_SMBTREE_HELP", "Left", hlppos )
3043 ok = VRset("PB_SMBTREE_HELP", "Top", pane_height - pbtn_height - marginx2)
3044
3045 ok = VRset("PICT_THROBBER", "Top", VRGet("CN_SMBTREE","Height") % 2 - 100 )
3046 ok = VRset("PICT_THROBBER", "Left", VRGet("CN_SMBTREE","Width") % 2 - 200 )
3047
3048 /* Connection details page */
3049 ok = VRSet("GB_CONDET", "Top", margin /* x2 */ )
3050 ok = VRSet("GB_CONDET", "Left", margin /* x2 */ /* split_left + 60 */ )
3051 ok = VRset("GB_CONDET", "Height", pane_height )
3052 ok = VRset("GB_CONDET", "Width", rcnr_width )
3053
3054 ok = VRset("GB_CONDET2", "Left", margin )
3055 ok = VRset("GB_CONDET2", "Top", /* 245 + */ marginx2)
3056 ok = VRset("GB_CONDET2", "Width", rcnr_width - marginx2)
3057 ok = VRset("GB_CONDET2", "Height", pane_height - (margin * 5) - pbtn_height /* - 245 */ )
3058
3059 ok = VRset("CN_CONDET", "Top", margin )
3060 ok = VRset("CN_CONDET", "Left", margin )
3061 ok = VRset("CN_CONDET", "Width", VRGet("GB_CONDET2","Width") - marginx2)
3062 ok = VRset("CN_CONDET", "Height", VRGet("GB_CONDET2","Height") - marginx2)
3063
3064 ok = VRset("PB_CONDET_SAVE", "Left", margin )
3065 ok = VRset("PB_CONDET_SAVE", "Top", pane_height - pbtn_height - marginx2 )
3066 ok = VRset("PB_CONDET_LOAD", "Left", VRGet("PB_CONDET_SAVE","Width") + marginx2)
3067 ok = VRset("PB_CONDET_LOAD", "Top", pane_height - pbtn_height - marginx2 )
3068
3069 hlpmin = VRGet("PB_CONDET_LOAD", "Left") + VRGet("PB_CONDET_LOAD","Width") + marginx2
3070 hlppos = rcnr_width - marginx2 - VRGet("PB_CONDET_HELP","Width") + 24
3071 IF hlppos < hlpmin THEN hlppos = hlpmin
3072
3073 ok = VRset("PB_CONDET_HELP", "Left", hlppos )
3074 ok = VRset("PB_CONDET_HELP", "Top", pane_height - pbtn_height - marginx2)
3075
3076 /* Global settings page */
3077 ok = VRSet("GB_GLOBAL", "Top", margin /* x2 */ )
3078 ok = VRSet("GB_GLOBAL", "Left", margin /* x2 */ /* split_left + 60 */ )
3079 ok = VRset("GB_GLOBAL", "Height", pane_height )
3080 ok = VRset("GB_GLOBAL", "Width", rpane_width )
3081
3082 ok = VRset("GB_GLOBAL2", "Left", margin )
3083 ok = VRset("GB_GLOBAL2", "Top", marginx2 /* 245 + marginx2 */ )
3084 ok = VRset("GB_GLOBAL2", "Width", rpane_width - marginx2 )
3085
3086 ok = VRset("GB_RESOLUTION", "Left", margin )
3087 ok = VRset("GB_RESOLUTION", "Top", margin * 3 + VRGet("GB_GLOBAL2","Height") /* 245 + (margin * 3) + VRGet("GB_GLOBAL2","Height") */ )
3088 ok = VRset("GB_RESOLUTION", "Width", rpane_width - marginx2 )
3089
3090 ok = VRset("GB_LOGGING","Left", margin )
3091 ok = VRset("GB_LOGGING","Top", /* 245 + */ (margin * 4) + VRGet("GB_GLOBAL2","Height") + VRGet("GB_RESOLUTION","Height"))
3092 ok = VRset("GB_LOGGING","Width", rpane_width - marginx2 )
3093
3094 ok = VRset("PB_SETTINGS_APPLY", "Left", margin )
3095 ok = VRset("PB_SETTINGS_APPLY", "Top", pane_height - pbtn_height - marginx2 )
3096 ok = VRset("PB_SETTINGS_APPLY", "Height", pbtn_height)
3097 ok = VRset("PB_SETTINGS_UNDO", "Left", VRGet("PB_CONDET_SAVE","Width") + marginx2)
3098 ok = VRset("PB_SETTINGS_UNDO", "Top", pane_height - pbtn_height - marginx2 )
3099 ok = VRset("PB_SETTINGS_UNDO", "Height", pbtn_height)
3100 ok = VRset("PB_SETTINGS_HELP", "Left", rpane_width - marginx2 - VRGet("PB_CONDET_HELP","Width") + 24)
3101 ok = VRset("PB_SETTINGS_HELP", "Top", pane_height - pbtn_height - marginx2)
3102 ok = VRset("PB_SETTINGS_HELP", "Height", pbtn_height)
3103
3104 /* SMB.CONF Settings page */
3105 ok = VRSet("GB_SMBCONFX", "Top", margin /* x2 */ )
3106 ok = VRSet("GB_SMBCONFX", "Left", margin /* x2 */ /* split_left + 60 */ )
3107 ok = VRset("GB_SMBCONFX", "Height", pane_height )
3108 ok = VRset("GB_SMBCONFX", "Width", rpane_width )
3109
3110 ok = VRset("GB_SMBCONF2", "Left", margin )
3111 ok = VRset("GB_SMBCONF2", "Top", marginx2 )
3112 ok = VRset("GB_SMBCONF2", "Width", rpane_width - marginx2 )
3113 ok = VRset("GB_SMBCONF2", "Height", pane_height - (margin * 7) - pbtn_height /* - 245 */ )
3114
3115 ok = VRset("PB_SMBCONF_APPLY", "Left", margin )
3116 ok = VRset("PB_SMBCONF_APPLY", "Top", pane_height - pbtn_height - marginx2 )
3117 ok = VRset("PB_SMBCONF_APPLY", "Height", pbtn_height)
3118 ok = VRset("PB_SMBCONF_UNDO", "Left", VRGet("PB_CONDET_SAVE","Width") + marginx2)
3119 ok = VRset("PB_SMBCONF_UNDO", "Top", pane_height - pbtn_height - marginx2 )
3120 ok = VRset("PB_SMBCONF_UNDO", "Height", pbtn_height)
3121 ok = VRset("PB_SMBCONF_HELP", "Left", rpane_width - marginx2 - VRGet("PB_CONDET_HELP","Width") + 24)
3122 ok = VRset("PB_SMBCONF_HELP", "Top", pane_height - pbtn_height - marginx2)
3123 ok = VRset("PB_SMBCONF_HELP", "Height", pbtn_height)
3124
3125 /* DOne with pages */
3126 ok = VRset("Main","Painting", 1)
3127
3128 /* check and empty event queue, trash spurious resize events */
3129 EventString = ''
3130 TrashedResize = 0
3131
3132 do until EventString = 'nop'
3133 EventString = VREvent('N')
3134 if EventString <> 'nop' then do
3135 if EventString = 'CALL Main_Resize' then TrashedResize = 1
3136 else interpret eventString
3137 end
3138 end
3139 if TrashedResize then CALL Main_Resize
3140
3141 if options.!debug == 1 then say time()' Main_Resize done'
3142return
3143/*:VRX Menu_Context_ChangeView_Click
3144*/
3145Menu_Context_ChangeView_Click:
3146 ok = VRSet("Cn_Current","View","NameTree")
3147return
3148
3149/*:VRX Menu_Context_Detach_All_Click
3150*/
3151Menu_Context_Detach_All_Click:
3152 ok = VRMethod( "CN_CURRENT", "GetRecordList", "All", "umrh." )
3153 do um = 1 to umrh.0
3154 ok = VRMethod( "CN_CURRENT", "SetRecordAttr", umrh.um, "Selected", 1)
3155 call PB_DETACH_Click
3156 end
3157 drop um umrh.
3158return
3159
3160/*:VRX Menu_Context_Detach_Click
3161*/
3162Menu_Context_Detach_Click:
3163 call PB_DETACH_Click
3164return
3165
3166/*:VRX Menu_Context_Edit_Click
3167*/
3168Menu_Context_Edit_Click:
3169 if options.!debug == 1 then say time()' Menu_Context_Edit_Click started'
3170 /* call VRMethod "TDL_1", 'PostEvent', 'PageSelected', 'Page', 1 */
3171 ok = VRset("TDL_1", 'Selected', 1)
3172 options.!editmode = 1
3173 CALL VRSet "PB_EDIT_CANCEL","Visible", 1
3174 CALL VRSet "PB_UNMOUNT","Enabled", 0
3175
3176 ok = VRMethod( "TDL_1", "SetTabText", 1, " "NLVGetMessage(33)" " )
3177/* CALL NLVSetText "DT_DIALOG","Caption",33 */
3178 CALL VRSet "GB_CURRENT", "ENABLED", 0
3179
3180 ok = VRSet("CB_MOUNT","Value","")
3181 ok = VRSet("CB_MOUNT","Selected",1)
3182 ok = VRSet("CB_MOUNT","Value",mtype.1)
3183
3184 parse var p_string p_workgroup':\\'p_server'\'p_share
3185
3186 /* if options.!debug == 1 then say time()' '||p_workgroup */
3187
3188 if options.!debug == 1 then say time()' data '||data
3189 if options.!debug == 1 then say time()' domain '||p_workgroup
3190 if options.!debug == 1 then say time()' server '||p_server
3191 if options.!debug == 1 then say time()' share '||p_share
3192 if options.!debug == 1 then say time()' string '||p_string
3193
3194
3195 CALL VRSet "EF_SHARE", "VALUE", p_share
3196 CALL VRSet "EF_SERVER", "VALUE", p_server
3197 CALL VRSet "EF_NETWORK","VALUE", p_workgroup
3198
3199 /* if options.!debug == 1 then say time()' '||p_node */
3200 parse var p_node p_drive'\'p_directory'\'
3201 CALL VRSet "CB_DRIVES", "Value", p_drive
3202 CALL VRSet "EF_DIRECTORY", "Value", p_directory
3203 if options.!debug == 1 then say time()' Menu_Context_Edit_Click done'
3204return
3205
3206/*:VRX Menu_Context_Open_Click
3207*/
3208Menu_Context_Open_Click:
3209 ok = VRSet("Menu_Context_Open_Default","Visible",0)
3210return
3211
3212/*:VRX Menu_Context_Open_Default_Click
3213*/
3214Menu_Context_Open_Default_Click:
3215 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Click started"
3216 if \VRIsValidObject(rh) then return
3217
3218 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3219 PARSE VAR userdata mountpoint ';' mounts ';' .
3220
3221 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3222
3223 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "DEFAULT" )
3224
3225 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Click done"
3226return
3227
3228/*:VRX Menu_Context_Open_Detail_Click
3229*/
3230Menu_Context_Open_Detail_Click:
3231 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Details_Click started"
3232 if \VRIsValidObject(rh) then return
3233
3234 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3235 PARSE VAR userdata mountpoint ';' mounts ';' .
3236
3237 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3238
3239 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "DETAILS" )
3240
3241 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Details_Click done"
3242return
3243
3244/*:VRX Menu_Context_Open_Icon_Click
3245*/
3246Menu_Context_Open_Icon_Click:
3247 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Icon_Click started"
3248 if \VRIsValidObject(rh) then return
3249
3250 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3251 PARSE VAR userdata mountpoint ';' mounts ';' .
3252
3253 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3254
3255 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "ICON" )
3256
3257 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Icon_Click done"
3258return
3259
3260/*:VRX Menu_Context_Open_Settings_Click
3261*/
3262Menu_Context_Open_Settings_Click:
3263 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Settings_Click started"
3264 if \VRIsValidObject(rh) then return
3265
3266 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3267 PARSE VAR userdata mountpoint ';' mounts ';' .
3268
3269 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3270
3271 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "SETTINGS" )
3272
3273 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Settings_Click done"
3274return
3275
3276/*:VRX Menu_Context_Open_Splitview_Click
3277*/
3278Menu_Context_Open_Splitview_Click:
3279 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Splitview_Click started"
3280 if \VRIsValidObject(rh) then return
3281
3282 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3283 PARSE VAR userdata mountpoint ';' mounts ';' .
3284
3285 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3286
3287 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "SPLITVIEW" )
3288
3289 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Splitview_Click done"
3290return
3291
3292/*:VRX Menu_Context_Open_Tree_Click
3293*/
3294Menu_Context_Open_Tree_Click:
3295 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Tree_Click started"
3296 if \VRIsValidObject(rh) then return
3297
3298 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', rh, 'UserData')
3299 PARSE VAR userdata mountpoint ';' mounts ';' .
3300
3301 if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\')
3302
3303 ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "TREE" )
3304
3305 if options.!debug == 1 then say time()' '||"Menu_Context_Open_Tree_Click done"
3306return
3307
3308/*:VRX Menu_Context_Refresh_Click
3309*/
3310Menu_Context_Refresh_Click:
3311 CALL Refresh
3312return
3313
3314/*:VRX Menu_Context_Unmount_Click
3315*/
3316Menu_Context_Unmount_Click:
3317 call PB_UNMOUNT_Click
3318return
3319
3320/*:VRX Menu_File_Autostart_Activate_Click
3321*/
3322Menu_File_Autostart_Activate_Click:
3323 options.!autostart = 1
3324
3325 Profile = VRParseFilename(settings.!ini,'DPN')'.'fs.!profileext
3326 ExeName = VRParseFileName(VRget("Application","Program"),'DPNE')
3327 if ExeName = "" then do
3328 parse source . . script
3329 ExeName = VRParseFilename(script,'DP')'\EVFSGUI.EXE'
3330 end
3331 StartupDir = VRParseFileName(VRget("Application","Program"),'DP')
3332 if StartupDir = "" then do
3333 parse source . . script
3334 StartUpDir = VRParseFilename(script,'DP')
3335 end
3336
3337 ObjTitle = NLVGetMessage( 59 )
3338 if ObjTitle = "" then ObjTitle = '[EVFS LAN-Connections]'
3339
3340 CALL PB_CONDET_SAVE_Click
3341
3342 rc = CreateObject( 'WPProgram', ObjTitle,'<WP_START>',,
3343 'EXENAME='||ExeName||';'||,
3344 'PROGTYPE=PM;'||,
3345 'TITLE='ObjTitle';'||,
3346 'PARAMETERS='Profile' -AUTOCLOSE -NOGUI;'||,
3347 'STARTUPDIR='StartupDir';'||,
3348 'NOPRINT=YES;'||,
3349 'HIDEBUTTON=DEFAULT;'||,
3350 'MINWIN=DEFAULT;'||,
3351 'CCVIEW=DEFAULT;'||,
3352 'DEFAULTVIEW=DEFAULT;'||,
3353 'OBJECTID=<EVFSGUI_AUTOSTART>',,
3354 'REPLACE' )
3355
3356 IF rc == 1 THEN do
3357 Text = NLVGetMessage( 60 )
3358 if Text = "" then Text = '[Created object in Autostart-Folder]'
3359 CALL VRMessage 'Main', Text, VRGet("Main", "Caption")
3360 end
3361 ELSE do
3362 Text = NLVGetMessage( 61 )
3363 if Text = "" then Text = '[Could not create object in Autostart-Folder]'
3364 Title = NLVGetMessage( 5 )
3365 if Title = "" then Title = '[Error]'
3366 CALL VRMessage 'Main', Text, Title, 'E'
3367 end
3368
3369 options.!autostart = 0
3370return
3371/*:VRX Menu_File_Autostart_Click
3372*/
3373Menu_File_Autostart_Click:
3374
3375return
3376
3377/*:VRX Menu_File_Autostart_Deactivate_Click
3378*/
3379Menu_File_Autostart_Deactivate_Click:
3380 ok = SysDestroyObject("<EVFSGUI_AUTOSTART>")
3381 IF ok == 1 THEN do
3382 Text = NLVGetMessage( 79 )
3383 if Text = "" then Text = '[Autostart object created successfully]'
3384 CALL VRMessage 'Main', Text, VRGet("Main", "Caption")
3385 end
3386 ELSE do
3387 Text = NLVGetMessage( 78 )
3388 if Text = "" then Text = '[Could find Autostart object]'
3389 Title = NLVGetMessage( 5 )
3390 if Title = "" then Title = '[Error]'
3391 CALL VRMessage 'Main', Text, Title, 'E'
3392 end
3393return
3394
3395/*:VRX Menu_File_Click
3396*/
3397Menu_File_Click:
3398 ok = VRSet("Menu_File_LMHosts_Reset", "Enabled", VRFileExists( samba.!lmhosts ))
3399 ok = VRSet("Menu_File_ucCred_Reset", "Enabled", (VRGet("Pict_PWINMEM","PicturePath") = "#36"))
3400return
3401
3402/*:VRX Menu_File_Close_Click
3403*/
3404Menu_File_Close_Click:
3405 call Quit
3406return
3407
3408/*:VRX Menu_File_Daemon_Start_Click
3409*/
3410Menu_File_Daemon_Start_Click:
3411 if options.!debug == 1 then say time()' Menu_File_Daemon_Start_Click started'
3412 if VRFileExists(SysBootDrive()"\ndpsmb.dbg") then do
3413 btns.0 = 2
3414 btns.1 = NLVGetMessage( 6 )
3415 btns.2 = NLVGetMessage( 7 )
3416 confirm = VRMessage('Main', NLVGetMessage( 119 ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 )
3417 IF confirm == 1 THEN do
3418 logFiles = value("LOGFILES",,"OS2ENVIRONMENT")
3419 ok1 = SysFileDelete(Logfiles||'\log.smbc')
3420 ok2 = SysFileDelete(Logfiles||'\log.ndpsmb')
3421 if ok1 <> 0 | ok2 <> 0 then do
3422 ok = VRMessage('Main', NLVGetMessage(5)' 'Logfiles||'\log.smbc RC='ok1||'0D0A'x||NLVGetMessage(5)' 'Logfiles||'\log.ndpsmb RC='ok2, NLVGetMessage( 5 ), 'E')
3423 end
3424 drop ok1 ok2
3425 end
3426 end
3427 address cmd 'detach 'fs.!prefix'CTL.EXE'
3428 ok = VRset("GB_CURRENT","Enabled", 1)
3429 ok = VRset("TDL_1","Enabled", 1)
3430 CALL REFRESH
3431 ok = VRSet("Menu_File_Daemon_Start","Enabled",0)
3432 ok = VRSet("Menu_File_Daemon_Stop","Enabled",1)
3433 if options.!debug == 1 then say time()' Menu_File_Daemon_Start_Click done'
3434return
3435
3436/*:VRX Menu_File_Daemon_Stop_Click
3437*/
3438Menu_File_Daemon_Stop_Click:
3439 if options.!debug == 1 then say time()' Menu_File_Daemon_Stop_Click started'
3440 ok = PRProcessList(proc)
3441 do I = 1 to proc.0
3442 CurProc = VRParseFileName(proc.i.name,'NE')
3443 if CurProc = fs.!prefix"CTL.EXE" then do
3444 call charout , ' 'CurProc' RC='
3445 ok = PRKillProcess(1,proc.i.pid)
3446 say ok
3447 end
3448 end
3449 ok = VRset("GB_CURRENT","Enabled", 0)
3450 ok = VRset("TDL_1","Enabled", 0)
3451 ok = VRSet("Menu_File_Daemon_Start","Enabled",1)
3452 ok = VRSet("Menu_File_Daemon_Stop","Enabled",0)
3453 if options.!debug == 1 then say time()' Menu_File_Daemon_Stop_Click stopped'
3454return
3455/*:VRX Menu_File_LMHosts_Reset_Click
3456*/
3457Menu_File_LMHosts_Reset_Click:
3458 call _LMHostsReset
3459return
3460
3461/*:VRX Menu_File_Load_Click
3462*/
3463Menu_File_Load_Click: PROCEDURE EXPOSE settings. options. icons. advanced. vfs. Profile fs. cd. samba.
3464 IF options.!autoload == 1 then filename = Profile
3465 else filename = VRFileDialog('Main', NLVGetMessage( 55 ), 'L', '*.'fs.!profileext)
3466 IF filename == '' THEN RETURN
3467 IF STREAM( filename, 'C', 'QUERY EXISTS') == '' THEN DO
3468 CALL VRMessage 'Main', NLVGetMessage( 56, filename ), NLVGetMessage( 5 ), 'E'
3469 RETURN
3470 END
3471
3472 CALL LINEIN filename, 1, 0
3473 DO WHILE LINES( filename )
3474 /* Fix Ticket #202 in order to allow blanks in sharenames */
3475 resline = LINEIN( filename )
3476 nodelen = pos('\\',resline)-2
3477 node = left(resline,nodelen)
3478 rwFlag = word(resline,words(resline))
3479 resource = substr(resline,nodelen+2,length(resline)-(nodelen+2)-(length(rwFlag)+1)+1)
3480 drop resline
3481 drop nodelen
3482
3483 vfs.!drive = FILESPEC('DRIVE', node )
3484 vfs.!mountpoint = STRIP( node, 'T', '\')
3485
3486 /* In case we only have a volume we reattach the backslash, otherwise restore will fail */
3487 if vfs.!drive = vfs.!mountpoint then vfs.!mountpoint = vfs.!mountpoint||'\'
3488
3489 call ParseResParmString
3490
3491 options.!workgroup = p_workgroup
3492 options.!server = p_server
3493 options.!share = p_share
3494 options.!user = p_user
3495 options.!password = p_password
3496 options.!spassword = p_spassword
3497 options.!master = p_master
3498 options.!mastertype = p_mtype
3499/* options.!memlen = p_memlen
3500 options.!logfile = p_logfile
3501 options.!loglevel = p_loglevel */
3502 options.!cachetimeout = p_cachetimeout
3503 options.!cachelistings = p_cachelistings
3504 options.!easupport = p_easupport
3505
3506 IF rwFlag == 'R' THEN
3507 options.!readonly = 1
3508 ELSE
3509 options.!readonly = 0
3510
3511 CALL Mount
3512
3513 END
3514 CALL STREAM filename, 'C', 'CLOSE'
3515
3516 options.!autoload = 0
3517
3518 CALL Refresh
3519RETURN
3520/*:VRX Menu_File_Save_Click
3521*/
3522Menu_File_Save_Click:
3523 call PB_CONDET_SAVE_Click
3524return
3525
3526/*:VRX Menu_File_ucCred_Reset_Click
3527*/
3528Menu_File_ucCred_Reset_Click:
3529 if _ucChkUc() then ok = _ucDelUc()
3530 ok = VRSet("Pict_PWINMEM","PicturePath","#37")
3531 ok = VRSet("EF_USER", "Value","")
3532 ok = VRSet("EF_PASSWORD","Value","")
3533 call _UserCredUpdate
3534return
3535
3536/*:VRX Menu_Help_About_Click
3537*/
3538Menu_Help_About_Click:
3539 ok = VRLoadSecondary("SW_ABOUT", "W")
3540return
3541
3542/*:VRX Menu_Help_Extended_Click
3543*/
3544Menu_Help_Extended_Click:
3545 ok = VRMethod( "Main", "InvokeHelp" )
3546return
3547
3548/*:VRX Menu_Selected_Connect_Click
3549*/
3550Menu_Selected_Connect_Click:
3551 call PB_SMBTREE_CONNECT_Click
3552return
3553
3554/*:VRX Menu_Selected_Default_Workgroup_Click
3555*/
3556Menu_Selected_Default_Workgroup_Click:
3557 if options.!debug == 1 then say time()' '||"Menu_Selected_Default_Workgroup_Click started"
3558 if options.!debug == 1 then say ' SMBObj.rh = "'SMBObj.rh'"'
3559 Success = 0
3560 if SMBObj.rh <> "" then do
3561 if options.!debug == 1 then say ' SMBObj.udatatype = "'SMBObj.udatatype'"'
3562 Success = 1
3563 select
3564 when SMBObj.udatatype = "WORKGROUP" then workgroupname = VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.rh,"Caption")
3565 when SMBObj.udatatype = "DISK" then workgroupname = VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.gparentrh,"Caption")
3566 when SMBObj.udatatype = "PRINTER" then workgroupname = VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.gparentrh,"Caption")
3567 when SMBObj.udatatype = "SERVER" then workgroupname = VRMethod("CN_SMBTREE","GetRecordAttr",SMBObj.parentrh,"Caption")
3568 otherwise Success = 0
3569 end
3570
3571 /* FIXME: switch over to REXXIni calls */
3572 if Success = 1 then ok = TRSetIni("[global]","workgroup", workgroupname, samba.!smbconf)
3573 end
3574 Buttons.1 = NLVGetMessage(2)
3575 Buttons.0 = 1
3576
3577 if Success = 0 then do
3578 id = VRMessage( VRWindow(), NLVGetMessage(5), NLVGetMessage(75), "Error", "Buttons.", 1, 1 )
3579 end
3580 else do
3581 id = VRMessage( VRWindow(), NLVGetMessage(117, workgroupname), NLVGetMessage(75), "Information", "Buttons.", 1, 1 )
3582 end
3583 if options.!debug == 1 then say time()' '||"Menu_Selected_Default_Workgroup_Click done"
3584return
3585
3586/*:VRX Menu_Selected_DetailsView_Click
3587*/
3588Menu_Selected_DetailsView_Click:
3589 ok = VRSet("CN_smbtree", "View", "Detail")
3590return
3591
3592/*:VRX Menu_Selected_Info_Click
3593*/
3594Menu_Selected_Info_Click:
3595 if options.!debug == 1 then say time()' Menu_Selected_Info_Click started'
3596
3597 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "SelRH." )
3598 if SelRH.0 = 0 then do
3599 if options.!debug == 1 then say time()' Menu_Selected_Info_Click aborted'
3600 return
3601 end
3602
3603 call _GetSMBObjectProperties SelRH.1
3604
3605 window = VRLoadSecondary( "SW_INFO", "W" )
3606 if options.!debug == 1 then say time()' Menu_Selected_Info_Click done'
3607return
3608
3609/*:VRX Menu_Selected_Refresh_Click
3610*/
3611Menu_Selected_Refresh_Click:
3612 ok = VRMethod( "CN_smbtree", "SetRecordAttr", SMBObj.rh, "Icon","#61:PMWP.DLL")
3613 call _DelSMBObjectShares SMBObj.rh
3614 machine = SMBObj.resname
3615 ok = VRSet("TM_RefreshTreeDisplay", "Delay", 1000)
3616 call _RefreshShares
3617return
3618
3619/*:VRX Menu_Selected_Remove_Click
3620*/
3621Menu_Selected_Remove_Click:
3622 ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "selrec." )
3623 if selrec.0 = 0 then return
3624
3625 do I = 1 to selrec.0
3626 if VRMethod("CN_CONDET", "GetFieldData", selrec.I, cd.statusfh) = icons.!passive then do
3627 CALL VRMethod "CN_CONDET", 'RemoveRecord', selrec.I
3628 end
3629 else do
3630 mountpoint = VRMethod("CN_CONDET", "GetFieldData", selrec.I, cd.mpointfh)
3631 mpidx = VRMethod("CN_CONDET", "GetFieldData", selrec.I, cd.mpidxfh)
3632 if mpidx = 1 then do
3633 btns.0 = 2
3634 btns.1 = NLVGetMessage( 6 )
3635 btns.2 = NLVGetMessage( 7 )
3636 confirm = VRMessage('Main', NLVGetMessage( 72, mountpoint ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 )
3637 IF confirm \= 1 THEN RETURN
3638
3639 CALL _Dynamic "ok = "fs.!prefix"RxUnmount('"mountpoint"', "mpidx")"
3640 CALL VRMethod "CN_CONDET", 'RemoveRecord', selrec.I
3641 CALL Refresh
3642 end
3643 else do
3644 CALL VRMessage 'Main', NLVGetMessage( 71 ) , NLVGetMessage( 89 )||" "||mountpoint , 'E'
3645 end
3646 end
3647 end
3648return
3649
3650/*:VRX Menu_Selected_Retry_Click
3651*/
3652Menu_Selected_Retry_Click: PROCEDURE EXPOSE settings. options. icons. vfs. fs. advanced. cd. samba. mtype.
3653
3654 ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "srcrec." )
3655 if srcrec.0 = 0 then return
3656
3657 srcrec = srcrec.1
3658
3659 p_mpoint = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.MpointFH)
3660
3661 p_workgroup = VRMethod("CN_CONDET", "GetFieldData", srcrec, cd.workgrpFH )
3662 p_server = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.ServerFH)
3663 p_share = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.ShareFH)
3664 p_user = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.UserFH)
3665 p_password = x2c(VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.SpasswordFH))
3666
3667 ShareLevel = 1
3668 if p_share = "" then ShareLevel = 2
3669 if p_server = "" then ShareLevel = 3
3670 if p_workgroup = "" then ShareLevel = 4
3671
3672 ok = VRSet("CB_MOUNT", "Selected", Sharelevel )
3673 ok = VRset("CB_MOUNT", "Value", mtype.sharelevel)
3674
3675 call _UpdateObject "EF_SERVER", p_server
3676 ok = VRset("EF_SHARE" , "Value", p_share)
3677 ok = VRset("EF_NETWORK", "Value", p_workgroup)
3678 ok = VRset("EF_USER" , "Value", p_user)
3679 ok = VRset("EF_PASSWORD", "Value", p_password)
3680
3681 parse var p_mpoint p_drv '\' p_dir
3682
3683 p_dir = strip(p_dir,'T','\')
3684
3685 ok = VRset("CB_DRIVES" , "Value", p_drv)
3686 ok = VRset("EF_DIRECTORY" , "Value", p_dir)
3687
3688 CALL PB_MOUNT_Click
3689
3690/* if VRMethod( "CN_CONDET", "ValidateRecord", srcRec) = 1 then do
3691 if VRMethod("CN_CONDET", "GetRecordAttr", srcRec, "Icon") = icons.!passive then ok = VRMethod( "CN_CONDET", "RemoveRecord", srcRec)
3692 end */
3693return
3694
3695/*:VRX Menu_Selected_TimeSync_Click
3696*/
3697Menu_Selected_TimeSync_Click:
3698 if options.!debug == 1 then say time()' Menu_Selected_TimeSync_Click started'
3699
3700 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "SelRH." )
3701 if SelRH.0 = 0 then do
3702 if options.!debug == 1 then say time()' Menu_Selected_TimeSync_Click aborted'
3703 return
3704 end
3705
3706 call _GetSMBObjectProperties SelRH.1
3707
3708 options.!timesrv = SMBObj.resname
3709 call _TimeSync
3710
3711 if options.!debug == 1 then say time()' Menu_Selected_TimeSync_Click done'
3712return
3713
3714/*:VRX Menu_Selected_TreeView_Click
3715*/
3716Menu_Selected_TreeView_Click:
3717 ok = VRSet("CN_smbtree", "View", "IconTree")
3718return
3719
3720/*:VRX Mount
3721*/
3722Mount: PROCEDURE EXPOSE settings. options. icons. vfs. fs. advanced. cd. samba.
3723 if options.!debug == 1 then say time()' Mount procedure started'
3724 /* Set mouse pointer to wait - this operation might take a few seconds */
3725 call VRSet VRWindow(), 'Pointer', 'Wait'
3726
3727/* Disabled, because we merge profile now - in earlier revisions
3728 we replaced it but only for preexisting drives - this made only
3729 sense as long as we were unable to detect double connections -
3730 this could be made an option!
3731
3732 IF options.!autoload then do
3733 CALL _Dynamic "ok = "fs.!prefix"RxDetach('"vfs.!drive"')"
3734 if options.!debug == 1 then say time()' '||'Autoload Detach "'vfs.!drive'" =' ok
3735 end */
3736
3737 /* Attach the virtual drive - only if drive is not already attached */
3738 if pos(vfs.!drive,MyFreeDriveMap("C:","FREE")) > 0 then do
3739 CALL _Dynamic "ok = "fs.!prefix"RxAttach('"vfs.!drive"')"
3740
3741 if options.!debug == 1 then say time()' '||'Attach "'vfs.!drive'" =' ok
3742 end
3743
3744 /* Create the mount point and store whether it was created or already existed */
3745 CALL _Dynamic "CreateMP = "fs.!prefix"RxCreateMountPoint('"vfs.!mountpoint"')"
3746
3747 if options.!debug == 1 then say time()' '||'Create "'vfs.!mountpoint'" = 'CreateMP
3748
3749
3750 /* Build the resource parameter string */
3751 src = ''
3752 IF options.!workgroup \= '' THEN src = src';WORKGROUP='options.!workgroup
3753 IF options.!server \= '' THEN src = src';SERVER='options.!server
3754 IF options.!share \= '' THEN src = src';SHARE='options.!share
3755 IF options.!user \= '' THEN src = src';USER='options.!user
3756 IF options.!password \= '' THEN src = src';PASSWORD='options.!password
3757 IF options.!spassword \= '' THEN src = src';SPASSWORD='options.!spassword
3758 IF options.!master \= '' THEN src = src';MASTER='options.!master
3759 IF options.!mastertype \= '' THEN src = src';MASTERTYPE='options.!mastertype
3760/* IF options.!memlen \= '' THEN src = src';MEMLEN='options.!memlen
3761 IF options.!logfile \= '' THEN src = src';LOGFILE='options.!logfile
3762 IF options.!loglevel \= '' THEN src = src';LOGLEVEL='options.!loglevel */
3763 IF options.!cachetimeout \= '' THEN src = src';CTO='options.!cachetimeout
3764 IF options.!cachelistings \= '' THEN src = src';CLD='options.!cachelistings
3765 IF options.!easupport \= '' THEN src = src';EASUPPORT='options.!easupport
3766
3767 IF options.!readonly = 1 then rwFlag = 'R'; else rwFlag = 'W'
3768
3769 parse var vfs.!mountpoint mpoint ';' .
3770 mpoint = strip(mpoint,'T','\')||'\'
3771
3772 if options.!master = "" then options.!master = "WORKGROUP"
3773 if options.!mtype = "" then options.!mtype = "1"
3774 if options.!loglevel = "" then options.!loglevel = "0"
3775 if options.!memlen = "" then options.!memlen = "2"
3776 if options.!cachetimeout = "" then options.!cachetimeout = "10"
3777 if options.!cachelistings = "" then options.!cachelistings = "32"
3778 if options.!easupport= "" | options.!easupport= " " then options.!easupport = strip(options.!easupport)
3779 if options.!password <> "" & options.!spassword = "" then do
3780 options.!spassword = c2x(options.!password)
3781 options.!password = ""
3782 end
3783
3784 hashstr = mpoint' 'translate(options.!workgroup)' 'translate(options.!server)' 'translate(options.!share)' 'options.!user' 'options.!spassword' 'options.!easupport' 'rwFlag
3785
3786 md5 = rexx_md5(hashstr)
3787
3788 CALL VRMethod "CN_CONDET", 'GetRecordList', 'All', 'records.'
3789 DO i = 1 TO records.0
3790 hash = VRMethod("CN_CONDET","GetFieldData", records.i, cd.hashfh)
3791
3792 if options.!debug == 1 then say VRMethod("CN_CONDET","GetFieldData", records.i, CD.mpointFH)'->'hash
3793 if options.!debug == 1 then say mpoint'->'md5
3794
3795 if hash = md5 then do
3796 If VRMethod("CN_CONDET","GetFieldData", records.i, cd.statusfh) = icons.!active then do /* Same hash, status active */
3797 say "Double connection detected!!"
3798 if options.!spassword <> "" then upw = ":********"
3799 else upw = ""
3800 buttons.0 = 2
3801 buttons.1 = NLVGetMessage(9)
3802 buttons.2 = NLVGetMessage(3)
3803 Answer = VRMessage('Main',NLVGetMessage(64) , NLVGetMessage( 36,options.!user||upw'@'options.!workgroup'\\'options.!server'\'options.!share, vfs.!mountpoint ), 'W','buttons.')
3804 if Answer = 2 then do
3805 call VRSet VRWindow(), 'Pointer', '<default>'
3806 say "Double connection - do not mount!!"
3807 return
3808 end
3809 end
3810 else do /* Same hash, status passive - we have to remove it */
3811 ok = VRMethod("CN_CONDET", "RemoveRecord", records.i )
3812 end
3813 end
3814 end
3815
3816 cd.lastrh = ""
3817 ok = ParseResourceData(vfs.!mountpoint,'SMBFS SMBFS64 \\'options.!workgroup':'options.!server'\'options.!share'@'options.!user||src' 'rwFlag)
3818
3819 /* Now mount the resource */
3820 CALL _Dynamic "ok = "fs.!prefix"RxMount('SMBFS','"vfs.!mountpoint"', '"src"', '"rwFlag"')"
3821
3822 if options.!debug == 1 then say time()' '||'Mount "'vfs.!mountpoint'" =' ok
3823 if ok <> 0 then do
3824 if options.!password <> "" then upw = ":********"
3825 else upw = ""
3826 buttons.0 = 2
3827 buttons.1 = NLVGetMessage(2)
3828 buttons.2 = NLVGetMessage(37)
3829 Answer = VRMessage('Main', SysGetMessage(ok), NLVGetMessage( 36, options.!user||upw'@'options.!workgroup'\\'options.!server'\'options.!share, vfs.!mountpoint ), 'W','buttons.')
3830 if Answer = 2 then do /* Show explanation */
3831 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')
3832 end
3833 if cd.lastrh <> '' then do
3834 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, icons.!passive) /* Passive Connection icon */
3835 ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", icons.!passive) /* Passive Connection icon */
3836 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.passwordfh, '') /* remove pain text password */
3837 end
3838
3839 /* In case the mountpoint was created for this failed operation, it is (optionally) removed again */
3840 if CreateMP = 0 & advanced.!alwaysmp <> 1 then do
3841 CALL _Dynamic "ok = "fs.!prefix"RxDeleteMountPoint('"vfs.!mountpoint"')"
3842 if options.!debug == 1 then say time()' '||'Remove "'vfs.!mountpoint'" = 'ok
3843 end
3844 end
3845 else do
3846 if options.!storecreds = 1 then do
3847 ok = VRSet("EF_User", "Value",options.!user)
3848 ok = VRSet("EF_Password","Value",x2c(options.!spassword))
3849 end
3850 end
3851 drop CreateMP /* not required anymore */
3852
3853/* Obsolete - the IOCtl will not be implemented this way in the plugin
3854 The REXX function is present, but is has no counterpart in the plugin
3855 ok = EvfsRxIoctl( 100 , vfs.!mountpoint, outstring)
3856 if options.!debug == 1 then say time()' '||'RxIoctl "'vfs.!mountpoint'" = 'ok', 'outstring
3857 */
3858 /* Set mouse pointer to default again */
3859 call VRSet VRWindow(), 'Pointer', '<default>'
3860 if options.!debug == 1 then say time()' Mount procedure done'
3861RETURN ok
3862
3863/*:VRX MyFreeDriveMap
3864*/
3865MyFreeDriveMap: procedure expose options. icons. fs. samba.
3866 if options.!debug == 1 then say time()' MyFreeDriveMap(proc) started'
3867 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:"
3868/* if options.!debug == 1 then say time()' '||"SysDriveMap(USED) started" */
3869 useddrives= SysDriveMap("C:","USED")
3870/* if options.!debug == 1 then say time()' '||"SysDriveMap(USED) done" */
3871
3872 Alldr = words(alldrives)
3873 FreeDriveMap = ""
3874 do I = 1 to AllDr
3875 if word(alldrives,1) = word(useddrives,1) then do
3876 Useddrives = subword(useddrives,2)
3877 Alldrives = subword(Alldrives,2)
3878 end
3879 else do
3880 FreeDriveMap = FreeDriveMap||word(alldrives,1)||' '
3881 Alldrives = subword(Alldrives,2)
3882 end
3883 end
3884 if options.!debug == 1 then say time()' MyFreeDriveMap(proc) done, result "'FreeDriveMap'"'
3885return FreeDriveMap
3886/*:VRX NoEVFSCALL
3887*/
3888NoEVFSCALL:
3889 CALL VRMessage 'Main', NLVGetMessage( 100 ), NLVGetMessage( 5 ), 'E'
3890 signal Halt
3891RETURN
3892
3893/*:VRX ParseResourceData
3894*/
3895ParseResourceData: PROCEDURE EXPOSE userdata options. icons. advanced. fs. cd. samba.
3896 PARSE ARG userdata, resource
3897 if options.!debug == 1 then say time()' ParseResourceData started'
3898 if options.!debug == 1 then say ' receiving "'userdata'" "'resource'" length ('length(resource)')'
3899
3900/* WARNING! resource has a maximal length of 255 and is truncated otherwise */
3901
3902/* PARSE VAR resource . ';WORKGROUP='p_workgroup';SERVER='p_server';SHARE='p_share';' . */
3903
3904 if left(word(resource,1),5) <> "SMBFS" then do
3905 /* Support for other filesystems would come here! */
3906 userData = "UNKNOWN"
3907 end
3908 else do
3909 cd.lastrh = VRMethod("CN_CONDET","AddRecord")
3910 PARSE VAR userdata p_mpoint ';' p_mpidx ';' .
3911
3912 p_mpoint = strip(p_mpoint,'T','\')||'\'
3913 p_rw = word(resource, words(resource))
3914
3915 /* Workaround for truncated resource string */
3916 if length(p_rw) > 1 then do
3917 /* The resource string must have been truncated
3918 p_rw is already wrong and
3919 p_easupport will most likely be also wrong (look below for workaround!) */
3920 p_rw ="W" /* this is guessed only!!! */
3921 if options.!debug == 1 then say ' WARNING! Detected truncated resource string - shorten workgroup name, server name, share name until this message goes away!'
3922 end
3923 /* this should be done unconditionally if the resource string is never truncated */
3924 else resource = left(resource,length(resource)-length(p_rw))
3925
3926 call ParseResParmString
3927
3928 if p_master = "" then p_master = "WORKGROUP"
3929 if p_mtype = "" then p_mtype = "1"
3930 if p_loglevel = "" then p_loglevel = "0"
3931 if p_memlen = "" then p_memlen = "2"
3932
3933 /* Also works around for a truncated resource string! */
3934 if p_easupport= "" | p_easupport= " " then p_easupport = strip(options.!easupport)
3935
3936 if p_password <> "" & p_spassword = "" then do
3937 p_spassword = c2x(p_password)
3938 p_password = ""
3939 end
3940
3941 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mpointFH, p_mpoint, cd.mpidxfh, p_mpidx, cd.workgrpFH , p_workgroup, cd.serverfh, p_server, cd.sharefh, p_share, cd.userfh, p_user)
3942 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.passwordfh, p_password, cd.spasswordfh, p_spassword, cd.masterfh, p_master, cd.mtypefh, p_mtype)
3943 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.ctoFH, p_cachetimeout, cd.cldFH, p_cachelistings)
3944 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)
3945 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, icons.!active) /* Active */
3946 ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", icons.!active) /* Active */
3947
3948 hashstr = p_mpoint' 'translate(p_workgroup)' 'translate(p_server)' 'translate(p_share)' 'p_user' 'p_spassword' 'p_easupport' 'p_rw
3949
3950 md5 = rexx_md5(hashstr)
3951
3952 ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.hashfh,md5)
3953
3954 SELECT
3955 WHEN p_share == '' & p_server \= '' THEN DO /* all shares on server */
3956 IF p_workgroup == '' THEN
3957 userdata = userdata';\\'p_server'\*'
3958 ELSE
3959 userdata = userdata';'p_workgroup':\\'p_server'\*'
3960 END
3961 WHEN p_server == '' & p_workgroup \= '' THEN /* all servers in workgroup */
3962 userdata = userdata';'p_workgroup':\\*'
3963 WHEN p_server == '' & p_workgroup == '' THEN /* all workgroups */
3964 userdata = userdata';*:\\*'
3965 OTHERWISE DO
3966 IF p_workgroup == '' THEN
3967 userdata = userdata';\\'p_server'\'p_share
3968 ELSE
3969 userdata = userdata';'p_workgroup':\\'p_server'\'p_share
3970 END
3971 END
3972 end
3973
3974 if options.!debug == 1 then say ' returning "'userdata'"'
3975 if options.!debug == 1 then say time()' ParseResourceData done'
3976RETURN userdata
3977
3978/*:VRX ParseResParmString
3979*/
3980ParseResParmString:
3981 PARSE VAR resource . ';WORKGROUP=' p_workgroup ';' .
3982 PARSE VAR resource . ';SERVER=' p_server ';' .
3983 PARSE VAR resource . ';SHARE=' p_share ';' .
3984 PARSE VAR resource . ';USER=' p_user ';' .
3985 PARSE VAR resource . ';PASSWORD=' p_password ';' .
3986 PARSE VAR resource . ';SPASSWORD=' p_spassword ';' .
3987 PARSE VAR resource . ';MASTER=' p_master ';' .
3988 PARSE VAR resource . ';MASTERTYPE=' p_mtype ';' .
3989 PARSE VAR resource . ';MEMLEN=' p_memlen ';' .
3990 PARSE VAR resource . ';LOGFILE=' p_logfile ';' .
3991 PARSE VAR resource . ';LOGLEVEL=' p_loglevel ';' .
3992 PARSE VAR resource . ';CTO=' p_cachetimeout ';' .
3993 PARSE VAR resource . ';CLD=' p_cachelistings ';' .
3994 PARSE VAR resource . ';EASUPPORT=' p_easupport ' '
3995return
3996/*:VRX PB_ABOUT_CLOSE_Click
3997*/
3998PB_ABOUT_CLOSE_Click:
3999 CALL SW_ABOUT_Close
4000return
4001
4002/*:VRX PB_ABOUT_COPY_Click
4003*/
4004PB_ABOUT_COPY_Click:
4005
4006 if VRGet("CB_TRAC","set") then DO
4007 remainstr = AboutStr
4008 AboutStr = ''
4009 DO WHILE remainstr <> ''
4010 PARSE VAR remainstr _part '0d0a'x remainstr
4011 AboutStr = AboutStr || _part ||'[[BR]]'||'0d0a'x
4012 END
4013 END
4014 ok = VRMethod( "Application", "PutClipboard", AboutStr )
4015 if options.!debug == 1 then call beep 880*2,10
4016 CALL SW_ABOUT_Close
4017return
4018
4019/*:VRX PB_ADVANCED_APPLY_Click
4020*/
4021PB_ADVANCED_APPLY_Click:
4022 advanced.!easupport = VRGet( "CB_EAS", "Set" )
4023 advanced.!readonly = VRGet( "CB_READONLY", "Set" )
4024 advanced.!alwaysmp = VRGet( "CB_ALWAYSMP", "Set" )
4025 advanced.!cachetimeout = VRGet( "SPIN_CACHETIMEOUT", "Value" )
4026 advanced.!cachelistings = VRGet( "SPIN_CACHELISTINGS", "Value" )
4027
4028 /* Obsolete */
4029 advanced.!memlen = VRGet( "SPB_MEMLEN", "Value" )
4030return
4031
4032/*:VRX PB_ADVANCED_HELP_Click
4033*/
4034PB_ADVANCED_HELP_Click:
4035 CALL VRMethod 'SW_ADVANCED', 'InvokeHelp'
4036return
4037
4038/*:VRX PB_ADVANCED_UNDO_Click
4039*/
4040PB_ADVANCED_UNDO_Click:
4041 CALL SW_ADVANCED_Init_Content
4042RETURN
4043
4044/*:VRX PB_ClearCred_Click
4045*/
4046PB_ClearCred_Click:
4047 call Menu_File_ucCred_Reset_Click
4048return
4049
4050/*:VRX PB_CONDET_HELP_Click
4051*/
4052PB_CONDET_HELP_Click:
4053 CALL VRMethod 'GB_CONDET', 'InvokeHelp'
4054return
4055
4056/*:VRX PB_CONDET_LOAD_Click
4057*/
4058PB_CONDET_LOAD_Click:
4059 if options.!debug == 1 then say time()' '||"PB_CONDET_LOAD_Click started"
4060 call Menu_File_Load_Click
4061 if options.!debug == 1 then say time()' '||"PB_CONDET_LOAD_Click done"
4062RETURN
4063
4064/*:VRX PB_CONDET_SAVE_Click
4065*/
4066PB_CONDET_SAVE_Click: PROCEDURE EXPOSE settings. options. icons. Profile fs. cd. advanced. samba.
4067 if options.!debug == 1 then say time()' '||"PB_CONDET_SAVE_Click started"
4068
4069 if options.!autostart == 0 THEN filename = VRFileDialog('Main', NLVGetMessage( 50 ), 'S', '*.'fs.!profileext)
4070 ELSE filename = Profile
4071
4072 IF filename == '' THEN RETURN
4073
4074 IF STREAM( filename, 'C', 'QUERY EXISTS') \= '' THEN DO
4075 btns.0 = 2
4076 btns.1 = NLVGetMessage( 6 )
4077 if btns.1 = "" then btns.1 = '[Yes]'
4078 btns.2 = NLVGetMessage( 7 )
4079 if btns.2 = "" then btns.2 = '[No]'
4080 Title = NLVGetMessage( 53 )
4081 if Title = "" then Title = "[File exists]"
4082 Text = NLVGetMessage( 54, filename )
4083 if Text = "" then Text = "[File "filename" exists? Overwrite?]"
4084
4085 confirm = VRMessage('Main', Text, Title, 'W', 'btns.', 1, 2 )
4086 IF confirm \= 1 THEN RETURN
4087 CALL VRChAttr filename,, 'HSR'
4088 CALL VRDeleteFile filename
4089 END
4090
4091 CALL VRMethod "CN_CONDET", 'GetRecordList', 'All', 'records.'
4092 DO i = 1 TO records.0
4093 resource = ""
4094 resource = resource||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mpointfh)||" "
4095 resource = resource||'\\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgrpFH )
4096 resource = resource||':'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
4097 resource = resource||'\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
4098 resource = resource||'@'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
4099 resource = resource||';WORKGROUP='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgrpFH )
4100 resource = resource||';SERVER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh)
4101 resource = resource||';SHARE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh)
4102 resource = resource||';USER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh)
4103 resource = resource||';PASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.passwordfh)
4104 resource = resource||';SPASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.spasswordfh)
4105 resource = resource||';MASTER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.masterfh)
4106 resource = resource||';MASTERTYPE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mtypefh)
4107 resource = resource||';CTO='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.ctoFH)
4108 resource = resource||';CLD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.cldFH)
4109/* resource = resource||';MEMLEN='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.memlenfh)
4110 resource = resource||';LOGFILE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.logfilefh)
4111 resource = resource||';LOGLEVEL='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.loglevelfh) */
4112 resource = resource||';EASUPPORT='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.easupportfh)
4113 resource = resource||' '||VRMethod("CN_CONDET","GetFieldData", records.i, cd.rwfh)
4114 call lineout filename, resource
4115 END
4116 CALL STREAM filename, 'C', 'CLOSE'
4117
4118 if options.!autostart == 0 THEN do
4119 Title = NLVGetMessage( 51 )
4120 if Title = "" then Title = "[Profile saved]"
4121 Text = NLVGetMessage( 52, filename )
4122 if Text = "" then Text = "[Profile saved to "filename"!]"
4123 CALL VRMessage 'Main', Text , Title, 'I'
4124 end
4125
4126 if options.!debug == 1 then say time()' '||"PB_CONDET_SAVE_Click done"
4127RETURN
4128
4129/*:VRX PB_DETACH_Click
4130*/
4131PB_DETACH_Click: PROCEDURE EXPOSE settings. options. icons. fs. cd. samba.
4132 if options.!debug == 1 then say time()' '||"PB_DETACH_Click started"
4133 CALL VRMethod "CN_CURRENT", 'GetRecordList', 'Selected', 'select.'
4134 IF select.0 < 1 THEN RETURN
4135
4136 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', select.1, 'UserData')
4137 PARSE VAR userdata mountpoint ';' mounts ';' .
4138 drive = STRIP( mountpoint, 'T', '\')
4139
4140 btns.0 = 2
4141 btns.1 = NLVGetMessage( 6 )
4142 btns.2 = NLVGetMessage( 7 )
4143 confirm = VRMessage('Main', NLVGetMessage( 58, drive ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 )
4144 IF confirm \= 1 THEN RETURN
4145
4146 /* TODO: ?? Unmount & delete all child mountpoints? - Do we need this? */
4147 /* FIXME: This is potentially dangerous on Netdrive - what happens with unknown mount types? */
4148 /* FIXME: Unclear under which circumstances we have an alpha value here (which crahed EVFSGUI) */
4149 if datatype(mounts) = 'NUM' then do
4150 /* Unmount any resources */
4151 DO i = 1 TO mounts
4152 CALL _Dynamic "ok = "fs.!prefix"RxUnmount('"mountpoint"', "i-1")"
4153 END
4154 end
4155 else if options.!debug == 1 then say ' '||"mounts = "mounts
4156
4157 CALL _Dynamic "ok = "fs.!prefix"RxDetach('"drive"')"
4158
4159 CALL Refresh
4160 if options.!debug == 1 then say time()' '||"PB_DETACH_Click done"
4161RETURN
4162
4163/*:VRX PB_DIALOG_HELP_Click
4164*/
4165PB_DIALOG_HELP_Click:
4166 CALL VRMethod 'GB_DIALOG', 'InvokeHelp'
4167return
4168
4169/*:VRX PB_EDIT_CANCEL_Click
4170*/
4171PB_EDIT_CANCEL_Click:
4172 options.!editmode = 0
4173 CALL VRSet "PB_UNMOUNT","Enabled", 1
4174 CALL VRSet "GB_CURRENT", "ENABLED", 1
4175 ok = VRSet("PB_EDIT_CANCEL","Visible", 0)
4176 ok = VRMethod( "TDL_1", "SetTabText", 1, " "NLVGetMessage(13)" " )
4177/* CALL NLVSetText 'DT_DIALOG', "Caption", 13 */
4178RETURN 0
4179
4180/*:VRX PB_INFO_OK_Click
4181*/
4182PB_INFO_OK_Click:
4183 call SW_INFO_Close
4184RETURN
4185
4186/*:VRX PB_LOGIN_CANCEL_Click
4187*/
4188PB_LOGIN_CANCEL_Click:
4189 credentials.!entered = 0
4190 call SW_LOGIN_Close
4191RETURN
4192
4193/*:VRX PB_LOGIN_OK_Click
4194*/
4195PB_LOGIN_OK_Click:
4196 ok = VRSet("EF_USER","Value",VRGet("EF_USER1","Value"))
4197 ok = VRSet("EF_PASSWORD","Value",VRGet("EF_PASSWORD1","Value"))
4198 options.!storecreds = VRGet("CB_STORECREDS1","Set")
4199 credentials.!entered = 1
4200
4201 if p_server <> "" then do
4202 ok = _rpcqueryuser(p_server, VRGet("EF_USER1","Value"), VRGet("EF_PASSWORD1","Value"), VRGet("EF_USER1","Value"))
4203
4204 if word(ok,1) = "1" then do
4205 ok = VRSet("DT_STATUSBAR","Caption", NLVGetMessage(107, rpc.queryuser.FULL_NAME))
4206 say 'rpc.queryuser.DIR_DRIVE = "'rpc.queryuser.DIR_DRIVE'"'
4207 say 'rpc.queryuser.LOGON_SCRIPT = "'rpc.queryuser.LOGON_SCRIPT'"'
4208 end
4209 else do
4210 CALL VRMessage 'Main', VRGet("EF_USER1","Value")" \\"p_server": "rpc.queryuser.LOGONSTATUS, NLVGetMessage(5), "E"
4211 end
4212 end
4213
4214 call SW_LOGIN_Close
4215RETURN
4216
4217/*:VRX PB_MOUNT_Click
4218*/
4219PB_MOUNT_Click:
4220 if options.!debug == 1 then say time()' '||"PB_MOUNT_Click started"
4221 ok = VRSet("TM_RefreshCurrentDisplay","Enabled", 0)
4222 say " network = "network
4223 if options.!editmode = 1 then do
4224 CALL PB_UNMOUNT_Click
4225 options.!editmode = 0
4226 ok = VRMethod("TDL_1","SetTabText", " "strip(NLVGetMessage(13))" ")
4227/* CALL NLVSetText 'DT_DIALOG', "Caption", 13 */
4228
4229 CALL VRSet "PB_UNMOUNT","Enabled", 1
4230 CALL VRSet "GB_CURRENT", "ENABLED", 1
4231 end
4232
4233 options.!workgroup = ''
4234 options.!server = ''
4235 options.!share = ''
4236 options.!user = ''
4237 options.!password = ''
4238 options.!master = ''
4239 options.!mastertype = ''
4240 options.!memlen = advanced.!memlen
4241 options.!easupport = advanced.!easupport
4242 options.!readonly = advanced.!readonly
4243 options.!loglevel = advanced.!loglevel
4244 options.!logfile = advanced.!logfile
4245 options.!cachetimeout = advanced.!cachetimeout
4246 options.!cachelistings = advanced.!cachelistings
4247
4248 vfs.!drive = ''
4249 vfs.!mountpoint = ''
4250
4251 stype = VRGet( "CB_MOUNT", "Selected" )
4252 share = STRIP( VRGet( "EF_SHARE", "Value" ))
4253 server = STRIP( VRGet( "EF_SERVER", "Value" ))
4254 network = STRIP( VRGet( "EF_NETWORK", "Value" ))
4255 mtype = VRGet( "CHK_MTYPE", "Set" )
4256 userid = STRIP( VRGet( "EF_USER", "Value" ))
4257 password = STRIP( VRGet( "EF_PASSWORD", "Value" ))
4258 mdrive = VRGet( "CB_DRIVES", "SelectedText" )
4259 if mdrive = "" then mdrive = VRGet( "CB_DRIVES", "Value" )
4260 mpath = STRIP( VRGet( "EF_DIRECTORY", "Value" ))
4261
4262 IF ( stype < 1 | stype > 4 ) THEN stype = 1
4263
4264 /* The required/optional/ignored parameters depend on the type of mount
4265 * requested. (Note, however, that the user, password, easupport and
4266 * memlen parameters are always optional.)
4267 */
4268 SELECT
4269 /* Scenario 1: Mount a single share.
4270 * Required: share, server
4271 * Optional: workgroup
4272 * Unused: master, mastertype
4273 */
4274 WHEN stype = 1 THEN DO
4275 IF server == '' | share == '' THEN DO
4276 /* error */
4277 RETURN 1
4278 END
4279 options.!server = server
4280 options.!share = share
4281 options.!workgroup = network
4282 END
4283
4284 /* Scenario 2: Mount all shares on a server.
4285 * Required: server
4286 * Optional: workgroup
4287 * Unused: share, master, mastertype
4288 */
4289 WHEN stype = 2 THEN DO
4290 IF server == '' THEN DO
4291 /* error */
4292 RETURN 1
4293 END
4294 options.!server = server
4295 options.!workgroup = network
4296 END
4297
4298 /* Scenario 3: Mount all servers in a workgroup.
4299 * Required: workgroup
4300 * Optional: -
4301 * Unused: share, server, master, mastertype
4302 */
4303 WHEN stype = 3 THEN DO
4304 IF workgroup == '' THEN DO
4305 /* error */
4306 RETURN 1
4307 END
4308 options.!workgroup = network
4309 END
4310
4311 /* Scenario 4: Mount all workgroups known to a master.
4312 * Required: master, mastertype
4313 * Optional: -
4314 * Unused: share, server, workgroup
4315 */
4316 WHEN stype = 4 THEN DO
4317 IF master == '' | mastertype == '' THEN DO
4318 /* error */
4319 RETURN 1
4320 END
4321 options.!master = network
4322 options.!mastertype = mtype
4323 END
4324 END
4325
4326 options.!user = userid
4327 options.!password = password
4328
4329 vfs.!drive = mdrive
4330 vfs.!mountpoint = mdrive'\'mpath
4331
4332 CALL Mount
4333 CALL Refresh
4334 ok = VRSet("TM_RefreshCurrentDisplay","Enabled", 1)
4335 if options.!debug == 1 then say time()' '||"PB_MOUNT_Click done"
4336RETURN 0
4337
4338/*:VRX PB_NEWMOUNTPOINTCANCEL_Click
4339*/
4340PB_NEWMOUNTPOINTCANCEL_Click:
4341 ok = VRSet("CB_DRIVES","Value","")
4342 ok = VRSet("EF_DIRECTORY","Value","")
4343 call SW_MOUNTPOINT_Close
4344RETURN 0
4345
4346/*:VRX PB_NEWMOUNTPOINTOK_Click
4347*/
4348PB_NEWMOUNTPOINTOK_Click:
4349 ok = VRSet("CB_DRIVES","Value",VRGet("CB_DRIVES1","Value"))
4350 ok = VRSet("EF_DIRECTORY","Value",VRGet("EF_DIRECTORY1","Value"))
4351
4352 advanced.!readonly = VRGet("CB_READONLY1","Set")
4353 advanced.!easupport = VRGet("CB_EAS1","Set")
4354 advanced.!alwaysmp = VRGet("CB_ALWAYSMP1","Set")
4355 advanced.!cachetimeout = VRGet( "SPIN_CACHETIMEOUT1", "Value" )
4356 advanced.!cachelistings = VRGet( "SPIN_CACHELISTINGS1", "Value" )
4357
4358 call SW_MOUNTPOINT_Close
4359RETURN
4360
4361/*:VRX PB_NEWPORTCANCEL_Click
4362*/
4363PB_NEWPORTCANCEL_Click:
4364/* ok = VRSet("CB_DRIVES","Value","")
4365 ok = VRSet("EF_DIRECTORY","Value","")
4366 call SW_MOUNTPOINT_Close */
4367RETURN 0
4368
4369/*:VRX PB_NEWPORTCONNECT_Click
4370*/
4371PB_NEWPORTCONNECT_Click:
4372/* ok = VRSet("CB_DRIVES","Value",VRGet("CB_DRIVES1","Value"))
4373 ok = VRSet("EF_DIRECTORY","Value",VRGet("EF_DIRECTORY1","Value"))
4374
4375 advanced.!readonly = VRGet("CB_READONLY1","Set")
4376 advanced.!easupport = VRGet("CB_EAS1","Set")
4377 advanced.!alwaysmp = VRGet("CB_ALWAYSMP1","Set")
4378 advanced.!cachetimeout = VRGet( "SPIN_CACHETIMEOUT1", "Value" )
4379 advanced.!cachelistings = VRGet( "SPIN_CACHELISTINGS1", "Value" )
4380
4381 call SW_MOUNTPOINT_Close */
4382RETURN
4383
4384/*:VRX PB_PROGRESS_ABORT_Click
4385*/
4386PB_PROGRESS_ABORT_Click:
4387 options.!delay = 0
4388 options.!autoload = 0
4389 options.!autoclose = 0
4390 call SW_PROGRESS_Close
4391return
4392
4393/*:VRX PB_SETTINGS_APPLY_Click
4394*/
4395PB_SETTINGS_APPLY_Click:
4396 advanced.!loglevel = VRGet("SPIN_LOG_LEVEL", "Value" )
4397 advanced.!logfile = VRGet("EF_LOGFILE", "Value" )
4398 advanced.!browseauth = VRGet("CB_BROWSEAUTH", "Set" )
4399 advanced.!browseimme = VRGet("CB_BROWSEIMME", "Set" )
4400 advanced.!special = VRGet("CB_SPECIAL", "Set" )
4401 advanced.!savepassive = VRGet("CB_SAVEPASSIVE","Set" )
4402 advanced.!lmhosts = VRGet("CB_LMHOSTS", "Set" )
4403 advanced.!broadcast = VRGet("CB_BROADCAST", "Set" )
4404 advanced.!miniicons = VRGet("CB_MINIICONS", "Set" )
4405
4406 /* Note: CB_LOGGING has its own event tied to the click */
4407 options.!storecreds = VRGet("CB_STORECREDS", "Set" )
4408 options.!debug = VRGet("CB_DEBUG", "Set" )
4409
4410 if options.!debug == 1 then do /* Turn on additional columns in connection details view */
4411 ok = VRRedirectStdio("ON")
4412 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpidxfh , "Visible", 1)
4413 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.passwordfh , "Visible", 1)
4414 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.spasswordfh , "Visible", 1)
4415 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.masterFH , "Visible", 1)
4416 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mtypeFH , "Visible", 1)
4417 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.memlenfh , "Visible", 1)
4418 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.logfilefh , "Visible", 1)
4419 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.loglevelfh , "Visible", 1)
4420 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.hashfh , "Visible", 1)
4421 end
4422 else do /* Turn on additional columns in connection details view */
4423 ok = VRRedirectStdio("OFF")
4424 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpidxfh , "Visible", 0)
4425 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.passwordfh , "Visible", 0)
4426 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.spasswordfh , "Visible", 0)
4427 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.masterFH , "Visible", 0)
4428 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mtypeFH , "Visible", 0)
4429 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.memlenfh , "Visible", 0)
4430 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.logfilefh , "Visible", 0)
4431 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.loglevelfh , "Visible", 0)
4432 ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.hashfh , "Visible", 0)
4433 end
4434
4435 ok = VRset("CN_CURRENT", "MiniIcons", advanced.!miniicons)
4436 ok = VRset("CN_SMBTREE", "MiniIcons", advanced.!miniicons)
4437 ok = VRset("CN_CONDET", "MiniIcons", advanced.!miniicons)
4438
4439 if advanced.!lmhosts = 1 then do
4440 call _LMHostsRead
4441 call _LMHostsUpdate
4442 end
4443 if advanced.!smbconfchanged = 1 then do
4444 name_resolve_order = VRGet("SPIN_NRO1","value")' 'VRGet("SPIN_NRO2","value")' 'VRGet("SPIN_NRO3","value")' 'VRGet("SPIN_NRO4","value")
4445 handle = IniOpen('global', samba.!smbconf)
4446 call IniSet 'name resolve order', name_resolve_order, handle
4447 /* FIXME: Throw an error in this case */
4448 if \_IsValidIPAddress(VRGet("EF_WINS_SERVER","Value")) then ok = VRSet("EF_WINS_SERVER","Value","")
4449 call IniSet 'wins server', VRGet("EF_WINS_SERVER","Value"), handle
4450 call IniSet 'log level', VRGet("SPIN_LOG_LEVEL","Value"), handle
4451 call IniSave handle
4452 call IniClose handle
4453 advanced.!smbconfchanged = 0
4454 ok = VRSet("PB_SETTINGS_UNDO","Enabled", 0)
4455 end
4456 if options.!storecreds = 0 then call Menu_File_ucCred_Reset_Click
4457return
4458
4459/*:VRX PB_SETTINGS_HELP_Click
4460*/
4461PB_SETTINGS_HELP_Click:
4462 CALL VRMethod 'SW_SETTINGS', 'InvokeHelp'
4463return
4464
4465/*:VRX PB_SETTINGS_UNDO_Click
4466*/
4467PB_SETTINGS_UNDO_Click:
4468 call SW_SETTINGS_Init_Content
4469return
4470
4471/*:VRX PB_SMBCONF_APPLY_Click
4472*/
4473PB_SMBCONF_APPLY_Click:
4474 if advanced.!smbconfchanged = 1 then do
4475 client_NTLMv2_auth = VRGet("CB_client_NTLMv2_auth","Set")
4476 client_lanman_auth = VRGet("CB_client_lanman_auth","Set")
4477 client_plaintext_auth = VRGet("CB_client_plaintext_auth","Set")
4478 client_use_spnego = VRGet("CB_client_use_spnego","Set")
4479 client_use_spnego_principal = VRGet("CB_client_use_spnego_principal","Set")
4480 client_signing = VRGet("SPIN_client_signing","Value")
4481 client_ipc_signing = VRGet("SPIN_client_ipc_signing","Value")
4482
4483 if VRGet("SPIN_client_max_protocol","Enabled") = 1 then do
4484 client_max_protocol = VRGet("SPIN_client_max_protocol","Value")
4485 client_min_protocol = VRGet("SPIN_client_min_protocol","Value")
4486 end
4487
4488
4489 handle = IniOpen('global', samba.!smbconf)
4490 call IniSet 'client NTLMv2 auth', YesNo(client_NTLMv2_auth), handle
4491 call IniSet 'client lanman auth', YesNo(client_lanman_auth), handle
4492 call IniSet 'client plaintext auth', YesNo(client_plaintext_auth), handle
4493 call IniSet 'client use spnego', YesNo(client_use_spnego), handle
4494 call IniSet 'client use spnego principal', YesNo(client_use_spnego_principal), handle
4495 call IniSet 'client signing', client_signing, handle
4496 call IniSet 'client ipc signing', client_ipc_signing, handle
4497
4498 if VRGet("SPIN_client_max_protocol","Enabled") = 1 then do
4499 call IniSet 'client max protocol', client_max_protocol, handle
4500 call IniSet 'client min protocol', client_min_protocol, handle
4501 end
4502
4503 call IniSave handle
4504 call IniClose handle
4505 advanced.!smbconfchanged = 0
4506 ok = VRSet("PB_SMBCONF_UNDO","Enabled", 0)
4507 end
4508return
4509
4510/*:VRX PB_SMBCONF_HELP_Click
4511*/
4512PB_SMBCONF_HELP_Click:
4513 CALL VRMethod 'SW_SETTINGS', 'InvokeHelp'
4514return
4515
4516/*:VRX PB_SMBCONF_UNDO_Click
4517*/
4518PB_SMBCONF_UNDO_Click:
4519 call SW_SETTINGS_Init_Content
4520return
4521
4522/*:VRX PB_SMBTREE_CONNECT_Click
4523*/
4524PB_SMBTREE_CONNECT_Click: PROCEDURE EXPOSE settings. options. icons. fs. advanced. cd. samba. mtype.
4525 if options.!debug == 1 then say time()' '||"PB_CONNECT_Click started"
4526
4527 ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "SelRH." )
4528
4529 if SelRH.0 = 0 then do
4530 if options.!debug == 1 then say time()' '||"PB_CONNECT_Click aborted"
4531 return
4532 end
4533
4534 p_workgroup = ''
4535 p_server = ''
4536 p_share = ''
4537
4538 srcFile = ""
4539 srcCtn = VRGet("CN_SMBTREE","Self")
4540 srcRec = SelRH.1
4541 trgCtn = VRGet("CN_CURRENT","Self")
4542 trgRec = ""
4543
4544 if options.!debug == 1 then do
4545 say ' srcCtn = "'srcCtn'"'
4546 if srcCtn <> "" then say ' srcCtn name = "'VRGet(srcCtn,'Name')'"'
4547 say ' srcRec = "'srcRec'"'
4548 say ' trgCtn = "'trgCtn'"'
4549 if trgCtn <> "" then say ' trgCtn name = "'VRGet(trgCtn,'Name')'"'
4550 say ' trgRec = "'trgRec'"'
4551 end
4552
4553 ok = VRMethod("CB_MOUNT", "GetStringList", "ShareLevels." )
4554
4555 DragCapt = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Caption")
4556 ParentRH = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Parent")
4557
4558 if ParentRH = "" then do /* A workgroup was dragged */
4559 say "Workgroup dragged!"
4560 parse var DragCapt p_workgroup '0D0A'x .
4561 p_workgroup = strip(p_workgroup)
4562 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
4563 call _UpdateObject "EF_SERVER", ""
4564 ok = VRSet("EF_SHARE","Value","")
4565
4566 ShareLevel = 3
4567 end
4568 else do
4569 ParDragCapt = VRMethod(srcCtn, "GetRecordAttr", ParentRH, "Caption")
4570 GParentRH = VRMethod(srcCtn, "GetRecordAttr", ParentRH, "Parent")
4571
4572 if GParentRH = "" then do /* A server was dragged */
4573 say "Server dragged!"
4574 parse var ParDragCapt p_workgroup '0D0A'x .
4575 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
4576 p_workgroup = strip(p_workgroup)
4577
4578 parse var DragCapt p_server '0D0A'x .
4579 p_server = strip(p_server)
4580 call _UpdateObject "EF_SERVER", p_server
4581 ok = VRSet("EF_Share","Value","")
4582
4583 ShareLevel = 2
4584 end
4585 else do /* A share was dragged */
4586 say "Share dragged!"
4587 GParDragCapt = VRMethod(srcCtn, "GetRecordAttr", GParentRH, "Caption")
4588
4589 parse var GParDragCapt p_workgroup '0D0A'x .
4590 p_workgroup = strip(p_workgroup)
4591 ok = VRSet("EF_NETWORK","Value",strip(p_workgroup))
4592
4593 parse var ParDragCapt p_server '0D0A'x .
4594 p_server = strip(p_server)
4595 call _UpdateObject "EF_SERVER", p_server
4596
4597 parse var DragCapt p_share '0D0A'x .
4598 p_share = strip(p_share)
4599 ok = VRSet("EF_Share","Value",strip(p_share))
4600
4601 ShareLevel = 1
4602 end
4603 end
4604
4605 say 'p_workgroup = "'p_workgroup'"'
4606 say 'p_server = "'p_server'"'
4607 say 'p_share = "'p_share'"'
4608
4609 ok = VRSet( "CB_MOUNT", "Selected", Sharelevel )
4610 call CB_MOUNT_Change
4611
4612 if trgRec = "" then do
4613 window = VRLoadSecondary( "SW_MOUNTPOINT", "W" )
4614 if VRGet("CB_DRIVES","Value") = "" then return
4615 end
4616 else do
4617
4618 TargetString = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Caption")
4619
4620 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Parent")
4621
4622 do while parTrgRH <> ""
4623 partrgCapt = VRMethod(trgCtn, "GetRecordAttr", partrgRH, "Caption")
4624 TargetString = partrgCapt||'\'||TargetString
4625 parTrgRH = VRMethod(trgCtn, "GetRecordAttr", partrgRH , "Parent")
4626 end
4627 say 'TargetString = "'TargetString'"'
4628 ok = VRSet("CB_DRIVES","Value", left(TargetString,2))
4629 ok = VRSet("EF_DIRECTORY","Value", substr(TargetString,4))
4630 end
4631
4632 window = VRLoadSecondary( "SW_LOGIN", "W" )
4633 if credentials.!entered = 1 then call PB_MOUNT_CLICK
4634
4635 if options.!debug == 1 then say time()' '||"PB_CONNECT_Click done"
4636RETURN
4637
4638/*:VRX PB_SMBTREE_HELP_Click
4639*/
4640PB_SMBTREE_HELP_Click:
4641 CALL VRMethod 'GB_SMBTREE', 'InvokeHelp'
4642return
4643
4644/*:VRX PB_SMBTREE_REFRESH_Click
4645*/
4646PB_SMBTREE_REFRESH_Click: /* PROCEDURE EXPOSE settings. options. icons. fs. samba. debuglevel advanced. UserCred Refreshmode Tempdir */
4647 if options.!debug == 1 then say time()' '||"PB_REFRESH_Click started"
4648
4649 if advanced.!browseauth = 1 & (UserCred = "--user=%" | UserCred = "" ) then do
4650 window = VRLoadSecondary( "SW_LOGIN", "W" )
4651 end
4652
4653 call _UserCredUpdate
4654 ok = VRset("Pict_Throbber", "Visible", 1)
4655 ok = VRset("Menu_Selected_Connect", "Visible", 0)
4656 ok = VRset("TM_Throbber", "Enabled", 1)
4657 ShowHidden = advanced.!special
4658 BroadCast = advanced.!broadcast
4659 ok = VRSet("TM_RefreshTreeDisplay", "Delay", 1000)
4660 ok = time('R')
4661 call _RefreshTree
4662 if options.!debug == 1 then say time()' '||"PB_REFRESH_Click done"
4663RETURN
4664
4665/*:VRX PB_UNMOUNT_Click
4666*/
4667PB_UNMOUNT_Click: PROCEDURE EXPOSE settings. options. icons. fs. cd. samba.
4668 if options.!debug == 1 then say time()' '||"PB_UNMOUNT_Click started"
4669 if options.!debug == 1 then say time()' '||'options.!editmode = 'options.!editmode
4670 CALL VRMethod "CN_CURRENT", 'GetRecordList', 'Selected', 'select.'
4671 IF select.0 < 1 THEN RETURN
4672
4673 userdata = VRMethod( "CN_CURRENT", 'GetRecordAttr', select.1, 'UserData')
4674 PARSE VAR userdata mountpoint ';' mounts ';' .
4675say 'userdata="'userdata'"'
4676 IF mounts > 0 & options.!editmode = 0 THEN DO
4677 btns.0 = 2
4678 btns.1 = NLVGetMessage( 6 )
4679 btns.2 = NLVGetMessage( 7 )
4680 confirm = VRMessage('Main', NLVGetMessage( 57, mountpoint ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 )
4681 IF confirm \= 1 THEN RETURN
4682 END
4683
4684 /* Unmount any resources */
4685 DO i = 1 TO mounts
4686 CALL _Dynamic "ok = "fs.!prefix"RxUnmount('"mountpoint"', "i-1")"
4687 END
4688
4689 /* Delete mountpoint */
4690 parent = VRMethod("CN_CURRENT", 'GetRecordAttr', select.1, 'Parent')
4691 IF parent \= '' THEN DO
4692 CALL _Dynamic "ok = "fs.!prefix"RxDeleteMountPoint('"mountpoint"')"
4693 END
4694
4695 CALL Refresh
4696 if options.!debug == 1 then say time()' '||"PB_UNMOUNT_Click done"
4697RETURN 0
4698
4699/*:VRX Pict_PWINMEM_Click
4700*/
4701Pict_PWINMEM_Click:
4702 if VRGet("Pict_PWINMEM","PicturePath") = "#36" then do
4703 call Menu_File_ucCred_Reset_Click
4704 end
4705return
4706
4707/*:VRX Quit
4708*/
4709Quit:
4710 if Fatal <> 1 then CALL _INISave
4711 /* ok = VRREdirectSTdio("OFF") */
4712 window = VRWindow()
4713 call VRSet window, "Shutdown", 1
4714 drop window
4715RETURN
4716
4717/*:VRX Refresh
4718*/
4719Refresh:
4720 if options.!debug == 1 then say time()' Refresh started'
4721 CALL VRSet "CN_CURRENT", 'Painting', 0
4722
4723 CALL VRMethod "CN_CURRENT", 'RemoveRecord', 'All'
4724
4725 /* Remove Active connections from details view */
4726 ok = VRMethod( "CN_CONDET", "GetRecordList", 'All', "rh." )
4727
4728 do I = 1 to rh.0
4729 /* This catches the bug we observed exactly once and were unable to reproduce! */
4730 if cd.statusfh = 'CD.STATUSFH' then do
4731 if options.!debug == 1 then call beep 880, 50
4732 if options.!debug == 1 then call beep 880, 50
4733 if options.!debug == 1 then say " cd.statusfh is undefined - check why!!!!!!"
4734 leave
4735 end
4736 if options.!debug == 1 then say ' Icon.'i' = "'||VRMethod( "CN_CONDET", "GetFieldData", rh.i, cd.statusfh)'"'
4737 if VRMethod("CN_CONDET","GetFieldData", rh.i, cd.statusfh) = icons.!active then CALL VRMethod "CN_CONDET", 'RemoveRecord', rh.i
4738 end
4739
4740/* call _AddTemplates */
4741 CALL VRSet "PB_DETACH", "Enabled", 0
4742 CALL VRSet "PB_UNMOUNT", "Enabled", 0
4743
4744 ok = VRSet("MENU_CONTEXT_OPEN", "Visible", 0)
4745/* ok = VRSet("MENU_CONTEXT_SEP1", "Visible", 0) */
4746 ok = VRSet("MENU_CONTEXT_DETACH", "Visible", 0)
4747 ok = VRSet("MENU_CONTEXT_UNMOUNT", "Visible", 0)
4748 ok = VRSet("MENU_CONTEXT_EDIT", "Visible", 0)
4749
4750 ok = VRSet("MENU_SELECTED_REMOVE", "Visible", 0)
4751 ok = VRSet("MENU_SELECTED_RETRY", "Visible", 0)
4752
4753 if options.!debug == 1 then say ' Remove records, disable buttons done.'
4754
4755 CALL VRMethod 'CB_DRIVES', 'Clear'
4756
4757 CALL VRSet "CN_CURRENT", "Caption", fs.!Name' 'fs.!version
4758
4759 /* Herwig B.: Attention! The SysDrivemap function with the "free" parameter causes hangs in case it is called repeatedly! */
4760 drvs = MyFreeDriveMap('C:', 'FREE')
4761
4762 DO i = 1 TO WORDS( drvs )
4763 drvstem.i = WORD( drvs, i )
4764 END
4765
4766 drvstem.0 = WORDS( drvs )
4767
4768 /* Add any existing EVFS drives */
4769 CALL GetMountPoints
4770
4771 CALL VRMethod "CB_DRIVES", "AddStringList", "drvstem."
4772 CALL VRSet "CN_CURRENT", 'Painting', 1
4773 if options.!debug == 1 then say time()' '||"Refresh done"
4774RETURN 0
4775
4776/*:VRX SPIN_client_ipc_signing_Change
4777*/
4778SPIN_client_ipc_signing_Change:
4779 advanced.!smbconfchanged = 1
4780return
4781
4782/*:VRX SPIN_client_max_protocol_Change
4783*/
4784SPIN_client_max_protocol_Change:
4785 advanced.!smbconfchanged = 1
4786return
4787
4788/*:VRX SPIN_client_min_protocol_Change
4789*/
4790SPIN_client_min_protocol_Change:
4791 advanced.!smbconfchanged = 1
4792return
4793
4794/*:VRX SPIN_client_signing_Change
4795*/
4796SPIN_client_signing_Change:
4797 advanced.!smbconfchanged = 1
4798return
4799
4800/*:VRX SPIN_LOG_LEVEL_Change
4801*/
4802SPIN_LOG_LEVEL_Change:
4803 advanced.!smbconfchanged = 1
4804return
4805
4806/*:VRX SPIN_NRO1_Change
4807*/
4808SPIN_NRO1_Change:
4809 advanced.!smbconfchanged = 1
4810return
4811
4812/*:VRX SPIN_NRO2_Change
4813*/
4814SPIN_NRO2_Change:
4815 advanced.!smbconfchanged = 1
4816return
4817
4818/*:VRX SPIN_NRO3_Change
4819*/
4820SPIN_NRO3_Change:
4821 advanced.!smbconfchanged = 1
4822return
4823
4824/*:VRX SPIN_NRO4_Change
4825*/
4826SPIN_NRO4_Change:
4827 advanced.!smbconfchanged = 1
4828return
4829
4830/*:VRX SPLIT_Main_Move
4831*/
4832SPLIT_Main_Move:
4833 ok = VRset("Main", "Painting", 0)
4834 NewPos = VRInfo("Left")
4835 OldPos = VRGet("SPLIT_Main","Left")
4836 ok = VRSet("SPLIT_Main","Left", NewPos)
4837 ok = VRset("GB_SMBTREE","Left", NewPos+60)
4838 call Main_Resize
4839 ok = VRset("Main", "Painting", 1)
4840return
4841
4842/*:VRX SW_ABOUT_Close
4843*/
4844SW_ABOUT_Close:
4845 options.!tracmark = VRGet('CB_TRAC', 'Set')
4846 call SW_ABOUT_Fini
4847return
4848
4849/*:VRX SW_ABOUT_Create
4850*/
4851SW_ABOUT_Create:
4852 call SW_ABOUT_Init
4853
4854 CALL NLVSetText 'SW_ABOUT', "Caption", 1
4855 CALL NLVSetText 'PB_ABOUT_CLOSE', "Caption", 29
4856 CALL NLVSetText 'PB_ABOUT_COPY', "Caption", 121
4857 CALL NLVSetText 'CB_TRAC', "Caption", 134
4858
4859 CALL VRSet 'CB_TRAC', 'Set', options.!tracmark
4860
4861 ok = VRSet("DT_About","Caption", Program' (c) 2007-2016 Alexander Taylor'||'0D0A'x||'and Herwig Bauernfeind for bww bitwise works GmbH.')
4862
4863 About.DscFH = VRMethod( "CN_ABOUT", "AddField", "String", "Component" )
4864 About.ValFH = VRMethod( "CN_ABOUT", "AddField", "String", "Version" )
4865
4866 call _AboutSambaClientGetInfo
4867
4868return
4869/*:VRX SW_ABOUT_Fini
4870*/
4871SW_ABOUT_Fini:
4872 window = VRInfo( "Window" )
4873 call VRDestroy window
4874 drop window
4875return
4876/*:VRX SW_ABOUT_Init
4877*/
4878SW_ABOUT_Init:
4879 window = VRInfo( "Object" )
4880 if( \VRIsChildOf( window, "TabbedDialog" ) ) then do
4881 call VRMethod window, "CenterWindow"
4882 call VRSet window, "Visible", 1
4883 call VRMethod window, "Activate"
4884 end
4885 drop window
4886return
4887
4888/*:VRX SW_ADVANCED_Close
4889*/
4890SW_ADVANCED_Close:
4891 call SW_ADVANCED_Fini
4892return
4893
4894/*:VRX SW_ADVANCED_Create
4895*/
4896SW_ADVANCED_Create:
4897 call SW_ADVANCED_Init
4898return
4899
4900/*:VRX SW_ADVANCED_Fini
4901*/
4902SW_ADVANCED_Fini:
4903 window = VRInfo( "Window" )
4904 call VRDestroy window
4905 drop window
4906return
4907/*:VRX SW_ADVANCED_Init
4908*/
4909SW_ADVANCED_Init:
4910 /* Title bar */
4911 CALL NLVSetText "SW_ADVANCED", "Caption", 40
4912
4913 /* Options */
4914 CALL NLVSetText "GB_ADVANCED", "Caption", 43
4915 CALL NLVSetText "CB_EAS", "Caption", 44
4916 CALL NLVSetText "CB_READONLY", "Caption", 45
4917 CALL NLVSetText "CB_ALWAYSMP", "Caption", 65
4918 CALL NLVSetText "DT_CACHETIMEOUT", "Caption", 130
4919 CALL NLVSetText "DT_CACHELISTINGS", "Caption", 131
4920
4921 /* Buttons */
4922 CALL NLVSetText "PB_ADVANCED_APPLY", "Caption", 122
4923 CALL NLVSetText "PB_ADVANCED_UNDO", "Caption", 123
4924 CALL NLVSetText "PB_ADVANCED_HELP", "Caption", 4
4925
4926 CALL VRSet "SW_ADVANCED", "HelpTag", NLVGetMessage(40)
4927
4928/* call VRMethod "SW_ADVANCED", "CenterWindow" */
4929 ok = VRSet("SW_ADVANCED", "Visible", 1)
4930/* call VRMethod "SW_ADVANCED", "Activate" */
4931return
4932
4933/*:VRX SW_ADVANCED_Init_Content
4934*/
4935SW_ADVANCED_Init_Content:
4936 IF advanced.!easupport \= "" THEN ok = VRSet("CB_EAS", "Set", advanced.!easupport)
4937 IF advanced.!readonly \= "" THEN ok = VRSet("CB_READONLY","Set", advanced.!readonly)
4938 IF advanced.!alwaysmp \= "" THEN ok = VRSet("CB_ALWAYSMP","Set", advanced.!alwaysmp)
4939 IF advanced.!cachetimeout \= "" THEN ok = VRSet("SPIN_CACHETIMEOUT", "Value", advanced.!cachetimeout)
4940 IF advanced.!cachelistings \= "" THEN ok = VRSet("SPIN_CACHELISTINGS", "Value", advanced.!cachelistings)
4941
4942 /* Obsolete */
4943 IF advanced.!memlen \= "" THEN ok = VRSet("SPB_MEMLEN", "Value", advanced.!memlen)
4944return
4945
4946/*:VRX SW_CONDET_Close
4947*/
4948SW_CONDET_Close:
4949 call SW_CONDET_Fini
4950return
4951
4952/*:VRX SW_CONDET_Create
4953*/
4954SW_CONDET_Create:
4955 call SW_CONDET_Init
4956return
4957
4958/*:VRX SW_CONDET_Fini
4959*/
4960SW_CONDET_Fini:
4961 window = VRInfo( "Window" )
4962 call VRDestroy window
4963 drop window
4964return
4965/*:VRX SW_CONDET_Init
4966*/
4967SW_CONDET_Init:
4968
4969return
4970
4971/*:VRX SW_CONDET_Init_Content
4972*/
4973SW_CONDET_Init_Content:
4974 if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 0)
4975
4976 /* Hide any "foreign" menu entries */
4977 ok = VRSet("Menu_Selected_Connect", "Visible", 0)
4978return
4979
4980/*:VRX SW_DIALOG_Close
4981*/
4982SW_DIALOG_Close:
4983 call SW_DIALOG_Fini
4984return
4985
4986/*:VRX SW_DIALOG_Create
4987*/
4988SW_DIALOG_Create:
4989 call SW_DIALOG_Init
4990return
4991
4992/*:VRX SW_DIALOG_Fini
4993*/
4994SW_DIALOG_Fini:
4995 window = VRInfo( "Window" )
4996 call VRDestroy window
4997 drop window
4998return
4999/*:VRX SW_DIALOG_Init
5000*/
5001SW_DIALOG_Init:
5002 LEDSize = VRMethod( "Screen", "PixelsToTwips", 16 )
5003
5004 ok = VRSet("Pict_PWINMEM","Top", VRGet("EF_USER","Top")+(VRGet("EF_USER","Height")-LEDSize)%2)
5005 ok = VRSet("Pict_PWINMEM","Width", LEDSize)
5006 ok = VRSet("Pict_PWINMEM","Height", LEDSize)
5007return
5008
5009/*:VRX SW_DIALOG_Init_Content
5010*/
5011SW_DIALOG_Init_Content:
5012 /* obsolete */
5013 if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 0)
5014
5015 ok = VRSet("Menu_Selected_Remove", "Visible", 0)
5016 ok = VRSet("Menu_Selected_Retry", "Visible", 0)
5017 ok = VRSet("Menu_Selected_Connect", "Visible", 0)
5018
5019 call _DialogPopulate
5020return
5021
5022/*:VRX SW_INFO_Close
5023*/
5024SW_INFO_Close:
5025 call SW_INFO_Fini
5026return
5027
5028/*:VRX SW_INFO_Create
5029*/
5030SW_INFO_Create:
5031 if options.!debug == 1 then say time()' SW_INFO_Create started'
5032 call SW_INFO_Init
5033 CALL NLVSetText 'SW_INFO', "Caption", 92
5034 CALL NLVSetText 'PB_INFO_OK', "Caption", 2
5035 Info.TypeFH = VRMethod( "CN_INFO", "AddField", "String", "Type" )
5036 Info.ValueFH = VRMethod( "CN_INFO", "AddField", "String", "Value" )
5037
5038 if options.!debug == 1 then do
5039 say ' Handle: "'SMBObj.rh'"'
5040 say ' Resource: "'SMBObj.resname'"'
5041 say ' Comment: "'SMBObj.comment'"'
5042 say ' Type: "'SMBObj.udatatype'"'
5043 say ' Message: "'SMBObj.udatamsg'"'
5044 say ' Icon: "'SMBObj.icon'"'
5045 end
5046say "Vorher:"rpc.srvinfo.OS_VERSION
5047 drop rpc.
5048say "Vorher:"rpc.srvinfo.OS_VERSION
5049 rpc_success = _rpcsrvinfo(SMBObj.resname,credentials.!username,credentials.!password)
5050
5051 Info.!nbname = VRMethod( "CN_INFO", "AddRecord")
5052 Info.!comment = VRMethod( "CN_INFO", "AddRecord")
5053 Info.!domain = VRMethod( "CN_INFO", "AddRecord")
5054 Info.!DMBLMB = VRMethod( "CN_INFO", "AddRecord")
5055 if rpc_success = 1 then Info.!capabilities = VRMethod( "CN_INFO", "AddRecord")
5056 Info.!os = VRMethod( "CN_INFO", "AddRecord")
5057 Info.!server = VRMethod( "CN_INFO", "AddRecord")
5058 if rpc_success = 1 then Info.!version = VRMethod( "CN_INFO", "AddRecord")
5059 Info.!status = VRMethod( "CN_INFO", "AddRecord")
5060 Info.!IP = VRMethod( "CN_INFO", "AddRecord")
5061 Info.!MAC = VRMethod( "CN_INFO", "AddRecord")
5062
5063 if rpc_success = 1 then do
5064 if rpc.srvinfo.OS_VERSION = 'RPC.SRVINFO.OS_VERSION' then rpc.srvinfo.OS_VERSION = ''
5065 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!nbname, Info.TypeFH, strip(NLVGetMessage(137),'T',':'),Info.ValueFH, rpc.srvinfo.NETBIOSNAME)
5066 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!comment,Info.TypeFH, strip(NLVGetMessage(125),'T',':'),Info.ValueFH, rpc.srvinfo.SERVERSTRING)
5067 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!capabilities, Info.TypeFH, strip(NLVGetMessage(138),'T',':'),Info.ValueFH, rpc.srvinfo.CAPABILITIES)
5068 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!version,Info.TypeFH, strip(NLVGetMessage(139),'T',':'),Info.ValueFH, rpc.srvinfo.OS_VERSION)
5069 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!status, Info.TypeFH, strip(NLVGetMessage(67),'T',':'),Info.ValueFH, rpc.srvinfo.LOGONSTATUS )
5070 /* we did not get these, but we know them anyway */
5071 if rpc.srvinfo.NETBIOSNAME = "" then ok = VRMethod( "CN_INFO", "SetFieldData", Info.!nbname, Info.TypeFH, strip(NLVGetMessage(137),'T',':'),Info.ValueFH, SMBObj.resname)
5072 if rpc.srvinfo.SERVERSTRING = "" then ok = VRMethod( "CN_INFO", "SetFieldData", Info.!comment,Info.TypeFH, strip(NLVGetMessage(125),'T',':'),Info.ValueFH, SMBObj.comment)
5073 end
5074 else do
5075 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!nbname, Info.TypeFH, strip(NLVGetMessage(137),'T',':'),Info.ValueFH, SMBObj.resname)
5076 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!comment,Info.TypeFH, strip(NLVGetMessage(125),'T',':'),Info.ValueFH, SMBObj.comment)
5077 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!status, Info.TypeFH, strip(NLVGetMessage(67),'T',':'), Info.ValueFH, SMBObj.udatamsg)
5078 end
5079
5080 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!domain, Info.TypeFH, strip(NLVGetMessage(21), 'T',':'),Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, WorkGroupFH ))
5081 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!os, Info.TypeFH, strip(NLVGetMessage(93), 'T',':'),Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, OSFH ))
5082 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!server, Info.TypeFH, strip(NLVGetMessage(19), 'T',':'),Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, VersionFH ))
5083 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!DMBLMB, Info.TypeFH, strip(NLVGetMessage(124),'T',':'),Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, MBFH ))
5084 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!IP, Info.TypeFH, "IP" ,Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, IPFH ))
5085 ok = VRMethod( "CN_INFO", "SetFieldData", Info.!MAC, Info.TypeFH, "MAC" ,Info.ValueFH, VRMethod("CN_SMBTREE", "GetFieldData", SMBObj.RH, MacFH ))
5086
5087 if options.!debug == 1 then say time()' SW_INFO_Create done'
5088return
5089
5090/*:VRX SW_INFO_Fini
5091*/
5092SW_INFO_Fini:
5093 window = VRInfo( "Window" )
5094 call VRDestroy window
5095 drop window
5096return
5097/*:VRX SW_INFO_Init
5098*/
5099SW_INFO_Init:
5100 window = VRInfo( "Object" )
5101 if( \VRIsChildOf( window, "TabbedDialog" ) ) then do
5102 call VRMethod window, "CenterWindow"
5103 call VRSet window, "Visible", 1
5104 call VRMethod window, "Activate"
5105 end
5106 drop window
5107return
5108
5109/*:VRX SW_LOGIN_Close
5110*/
5111SW_LOGIN_Close:
5112 call SW_LOGIN_Fini
5113return
5114
5115/*:VRX SW_LOGIN_Create
5116*/
5117SW_LOGIN_Create:
5118 call SW_LOGIN_Init
5119 ok = VRSet("SW_LOGIN","Caption",NLVGetMessage(136)' 'strip(p_workgroup' \\'p_server'\'p_share,'T','\'))
5120 CALL NLVSetText 'DT_USER1', "Caption", 25
5121 CALL NLVSetText 'DT_PASSWORD1', "Caption", 26
5122 CALL NLVSetText 'CB_STORECREDS1', "Caption", 135
5123 CALL NLVSetText 'PB_LOGIN_OK', "Caption", 2
5124 CALL NLVSetText 'PB_LOGIN_CANCEL',"Caption", 3
5125
5126 if VRIsValidObject(SMBObj.rh) then do
5127 select
5128 when pos("PDC",VRMethod("CN_smbtree", "GetFieldData", SMBObj.rh, MBFH)) > 0 then LoginIcon = "#63:PMWP.DLL" /* icons.!pdc */
5129 when SMBObj.udatatype = "WORKGROUP" then LoginIcon = SMBObj.Icon
5130 when SMBObj.udatatype = "SERVER" then LoginIcon = SMBObj.Icon
5131 when SMBObj.udatatype = "DISK" then do
5132 if pos("PDC",VRMethod("CN_smbtree", "GetFieldData", SMBObj.parentrh, MBFH)) > 0
5133 then LoginIcon = "#63:PMWP.DLL" /* icons.!pdc */
5134 else LoginIcon = "#35:PMWP.DLL" /* icons.!pdc */
5135 end
5136 otherwise LoginIcon = "#35:PMWP.DLL" /* icons.!machine_awake */
5137 end
5138 say loginicon
5139 ok = VRSet("Pict_Login","PicturePath", LoginIcon)
5140 end
5141 ok = VRSet("EF_USER1","Value",VRGet("EF_USER","Value"))
5142 ok = VRSet("EF_PASSWORD1","Value",VRGet("EF_PASSWORD","Value"))
5143 ok = VRSet("CB_STORECREDS1","Set",options.!storecreds)
5144return
5145
5146/*:VRX SW_LOGIN_Fini
5147*/
5148SW_LOGIN_Fini:
5149 window = VRInfo( "Window" )
5150 call VRDestroy window
5151 drop window
5152return
5153/*:VRX SW_LOGIN_Init
5154*/
5155SW_LOGIN_Init:
5156 window = VRInfo( "Object" )
5157 if( \VRIsChildOf( window, "TabbedDialog" ) ) then do
5158 call VRMethod window, "CenterWindow"
5159 call VRSet window, "Visible", 1
5160 call VRMethod window, "Activate"
5161 end
5162 drop window
5163return
5164
5165/*:VRX SW_LOGIN_KeyPress
5166*/
5167SW_LOGIN_KeyPress:
5168 obj = VRInfo( "Object" )
5169 keystr = VRGet( obj, "KeyString" )
5170/* say keystr */
5171 select
5172 when keystr = "{Enter}" then ok = VRMethod( "EF_LoginPassword", "SetFocus" )
5173 when keystr = "{Newline}" then ok = VRMethod( "EF_LoginPassword", "SetFocus" )
5174 when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click
5175 otherwise nop
5176 end
5177return
5178
5179/*:VRX SW_MOUNTPOINT_Close
5180*/
5181SW_MOUNTPOINT_Close:
5182 call SW_MOUNTPOINT_Fini
5183return
5184
5185/*:VRX SW_MOUNTPOINT_Create
5186*/
5187SW_MOUNTPOINT_Create:
5188 call SW_MOUNTPOINT_Init
5189
5190 ok = VRSet("SW_MOUNTPOINT","Caption",strip(p_workgroup' \\'p_server'\'p_share,'T','\')) /* NLVGetMessage(14)' ' */
5191 CALL NLVSetText 'DT_MPOINT1', "Caption", 27
5192 CALL NLVSetText 'PB_NEWMOUNTPOINTOK', "Caption", 2
5193 CALL NLVSetText 'PB_NEWMOUNTPOINTCANCEL',"Caption", 3
5194 CALL NLVSetText 'CB_EAS1', "Caption", 44
5195 CALL NLVSetText 'CB_READONLY1', "Caption", 45
5196 CALL NLVSetText 'CB_ALWAYSMP1', "Caption", 65
5197 CALL NLVSetText "DT_CACHETIMEOUT1", "Caption", 130
5198 CALL NLVSetText "DT_CACHELISTINGS1", "Caption", 131
5199
5200 ok = VRMethod( "CB_DRIVES", "GetStringList", "freedrives." )
5201 ok = VRMethod( "CB_DRIVES1", "AddStringList", "freedrives." )
5202 ok = VRSet("CB_DRIVES1", "Value", VRGet("CB_Drives","Value"))
5203
5204 if VRGet("EF_Directory","Value") = "" then ok = VRSet("EF_DIRECTORY1", "Value", VRGet("EF_Directory","Value"))
5205
5206 ok = VRMethod("EF_DIRECTORY1","AddString",p_share)
5207
5208 IF advanced.!easupport \= "" THEN ok = VRSet("CB_EAS1", "Set", advanced.!easupport)
5209 IF advanced.!readonly \= "" THEN ok = VRSet("CB_READONLY1", "Set", advanced.!readonly)
5210 IF advanced.!alwaysmp \= "" THEN ok = VRSet("CB_ALWAYSMP1", "Set", advanced.!alwaysmp)
5211 IF advanced.!cachetimeout \= "" THEN ok = VRSet("SPIN_CACHETIMEOUT1", "Value", advanced.!cachetimeout)
5212 IF advanced.!cachelistings \= "" THEN ok = VRSet("SPIN_CACHELISTINGS1","Value", advanced.!cachelistings)
5213return
5214
5215/*:VRX SW_MOUNTPOINT_Fini
5216*/
5217SW_MOUNTPOINT_Fini:
5218 window = VRInfo( "Window" )
5219 call VRDestroy window
5220 drop window
5221return
5222/*:VRX SW_MOUNTPOINT_Init
5223*/
5224SW_MOUNTPOINT_Init:
5225 window = VRInfo( "Object" )
5226 if( \VRIsChildOf( window, "TabbedDialog" ) ) then do
5227 call VRMethod window, "CenterWindow"
5228 call VRSet window, "Visible", 1
5229 call VRMethod window, "Activate"
5230 end
5231 drop window
5232return
5233
5234/*:VRX SW_PORTCONNECT_Close
5235*/
5236SW_PORTCONNECT_Close:
5237 call SW_PORTCONNECT_Fini
5238return
5239
5240/*:VRX SW_PORTCONNECT_Create
5241*/
5242SW_PORTCONNECT_Create:
5243 call SW_PORTCONNECT_Init
5244
5245 ok = VRGetINI("PM_PORT_DRIVER","SMB","SYSTEM")
5246
5247 if ok = "" then do
5248
5249 end
5250 else do
5251 say "Samba Spooler Port driver installed!"
5252 ok = SysINI("SYSTEM","PM_SPOOLER_PORT","ALL:","ports")
5253 smbport.0 = 0
5254 do I = 1 to ports.0
5255 if left(ports.I,3) = "SMB" then do
5256 X = smbport.0
5257 X = X + 1
5258 smbport.0 = X
5259 smbport.X = ports.I
5260 end
5261 end
5262 do I = 1 to smbport.0
5263 say smbport.I
5264 end
5265 end
5266
5267return
5268
5269/*:VRX SW_PORTCONNECT_Fini
5270*/
5271SW_PORTCONNECT_Fini:
5272 window = VRInfo( "Window" )
5273 call VRDestroy window
5274 drop window
5275return
5276/*:VRX SW_PORTCONNECT_Init
5277*/
5278SW_PORTCONNECT_Init:
5279 window = VRInfo( "Object" )
5280 if( \VRIsChildOf( window, "TabbedDialog" ) ) then do
5281 call VRMethod window, "CenterWindow"
5282 call VRSet window, "Visible", 1
5283 call VRMethod window, "Activate"
5284 end
5285 drop window
5286return
5287
5288/*:VRX SW_PROGRESS_Close
5289*/
5290SW_PROGRESS_Close:
5291 options.!delay = 0
5292 call Main_Resize
5293 call VRSet 'Main', 'Visible', 1
5294 call SW_PROGRESS_Fini
5295return
5296
5297/*:VRX SW_PROGRESS_Create
5298*/
5299SW_PROGRESS_Create:
5300 call SW_PROGRESS_Init
5301 CALL NLVSetText 'SW_PROGRESS', "Caption", 1
5302 CALL NLVSetText 'DT_PROGRESS', "Caption", 34
5303 CALL NLVSetText 'PB_PROGRESS_ABORT', "Caption", 3
5304
5305 if options.!delay > 0 then ok = VRSet("TM_TheCloser","Delay", options.!delay*1000)
5306
5307 CALL VRSet "TM_Progress_Throbber","Enabled", 1
5308 CALL VRSet "TM_TheCloser","Enabled", 1
5309return
5310
5311/*:VRX SW_PROGRESS_Fini
5312*/
5313SW_PROGRESS_Fini:
5314 call VRDestroy "SW_PROGRESS"
5315return
5316/*:VRX SW_PROGRESS_Init
5317*/
5318SW_PROGRESS_Init:
5319 call VRMethod "SW_PROGRESS", "CenterWindow", "Parent"
5320 call VRSet "SW_PROGRESS", "Visible", 1
5321 call VRMethod "SW_PROGRESS", "Activate"
5322return
5323
5324/*:VRX SW_SETTINGS_Close
5325*/
5326SW_SETTINGS_Close:
5327 call SW_SETTINGS_Fini
5328return
5329
5330/*:VRX SW_SETTINGS_Create
5331*/
5332SW_SETTINGS_Create:
5333 call SW_SETTINGS_Init
5334return
5335
5336/*:VRX SW_SETTINGS_Fini
5337*/
5338SW_SETTINGS_Fini:
5339 window = VRInfo( "Window" )
5340 call VRDestroy window
5341 drop window
5342return
5343/*:VRX SW_SETTINGS_Init
5344*/
5345SW_SETTINGS_Init:
5346 /* Title bar */
5347 call NLVSetText "SW_SETTINGS", "Caption", 47
5348
5349 /* Options */
5350 call NLVSetText "GB_GLOBAL", "Caption", 47
5351 call NLVSetText "CB_DEBUG", "Caption", 42
5352 call NLVSetText "CB_LOGGING", "Caption", 46
5353 call NLVSetText "CB_BROWSEIMME", "Caption", 48
5354 call NLVSetText "CB_BROWSEAUTH", "Caption", 49
5355 call NLVSetText "CB_SPECIAL", "Caption", 66
5356 call NLVSetText "CB_SAVEPASSIVE", "Caption", 73
5357 call NLVSetText "CB_LMHOSTS", "Caption", 133
5358 call NLVSetText "CB_BROADCAST", "Caption", 74
5359 call NLVSetText "CB_MINIICONS", "Caption", 70
5360 call NLVSetText "CB_STORECREDS", "Caption", 135
5361
5362 /* Buttons */
5363 call NLVSetText "PB_SETTINGS_APPLY", "Caption", 122
5364 call NLVSetText "PB_SETTINGS_UNDO", "Caption", 123
5365 call NLVSetText "PB_SETTINGS_HELP", "Caption", 4
5366
5367/* call VRSet "SW_ADVANCED", "HelpTag", NLVGetMessage(40) */
5368
5369/* call VRMethod "SW_SETTINGS", "CenterWindow" */
5370 ok = VRSet("SW_SETTINGS", "Visible", 1)
5371/* call VRMethod "SW_SETTINGS", "Activate" */
5372return
5373
5374/*:VRX SW_SETTINGS_Init_Content
5375*/
5376SW_SETTINGS_Init_Content:
5377 ok = VRSet("PB_SETTINGS_UNDO","Enabled", 1)
5378
5379 if advanced.!browseauth \= "" then ok = VRSet("CB_BROWSEAUTH", "Set", advanced.!browseauth)
5380 if advanced.!browseimme \= "" then ok = VRSet("CB_BROWSEIMME", "Set", advanced.!browseimme)
5381 if advanced.!broadcast \= "" then ok = VRSet("CB_BROADCAST", "Set", advanced.!broadcast)
5382 if advanced.!special \= "" then ok = VRSet("CB_SPECIAL", "Set", advanced.!special)
5383 if advanced.!savepassive \= "" then ok = VRSet("CB_SAVEPASSIVE","Set", advanced.!savepassive)
5384 if advanced.!lmhosts \= "" then ok = VRSet("CB_LMHOSTS", "Set", advanced.!lmhosts)
5385
5386 call VRSet "CB_LOGGING", "Set", VRFileExists(SysBootDrive()"\ndpsmb.dbg")
5387 if options.!debug \= "" then ok = VRSet("CB_debug", "Set", options.!debug)
5388 if options.!storecreds \= "" then ok = VRSet("CB_STORECREDS", "Set", options.!storecreds)
5389
5390 if advanced.!miniicons \= "" then ok = VRSet("CB_MINIICONS", "Set", advanced.!miniicons)
5391
5392/* if advanced.!logfile \= "" then ok = VRSet("EF_LOGFILE", "Value", advanced.!logfile) /* Obsolete */
5393 if advanced.!loglevel \= "0" then ok = VRSet("SPIN_LOG_LEVEL", "Value", advanced.!loglevel) */
5394
5395 log_level = IniGet('log level', 'global', samba.!smbconf)
5396 call _SmbConfCreateShadowCopy
5397
5398
5399say "log level ="log_level
5400 if log_level = "" then log_level = 2
5401say "log level ="log_level
5402 ok = VRSet("SPIN_LOG_LEVEL","Value",log_level)
5403
5404 wins_support = translate(IniGet('wins support', 'global', samba.!shadowsmbconf))
5405
5406 if wins_support = "YES" then do /* we are a WINS server ourself */
5407 ok = VRSet("DT_WINS_SERVER","Enabled", 0)
5408 ok = VRSet("EF_WINS_SERVER","BackColor", "PaleGray")
5409 ok = VRSet("EF_WINS_SERVER","Value", "")
5410 ok = VRSet("EF_WINS_SERVER","Enabled", 0)
5411 end
5412 else do
5413 ok = VRSet("EF_WINS_SERVER","Value", IniGet('wins server', 'global', samba.!shadowsmbconf))
5414 end
5415
5416 name_resolve_order = IniGet('name resolve order', 'global', samba.!shadowsmbconf)
5417
5418 do I = 1 to words(name_resolve_order)
5419 ok = VRSet("SPIN_NRO"||I, "value", word(name_resolve_order,I))
5420 end
5421
5422 advanced.!smbconfchanged = 0
5423return
5424
5425/*:VRX SW_SMBCONF_Close
5426*/
5427SW_SMBCONF_Close:
5428 call SW_SMBCONF_Fini
5429return
5430
5431/*:VRX SW_SMBCONF_Create
5432*/
5433SW_SMBCONF_Create:
5434 call SW_SMBCONF_Init
5435return
5436
5437/*:VRX SW_SMBCONF_Fini
5438*/
5439SW_SMBCONF_Fini:
5440 window = VRInfo( "Window" )
5441 call VRDestroy window
5442 drop window
5443return
5444/*:VRX SW_SMBCONF_Init
5445*/
5446SW_SMBCONF_Init:
5447
5448 /* Buttons */
5449 call NLVSetText "PB_SMBCONF_APPLY", "Caption", 122
5450 call NLVSetText "PB_SMBCONF_UNDO", "Caption", 123
5451 call NLVSetText "PB_SMBCONF_HELP", "Caption", 4
5452
5453return
5454
5455/*:VRX SW_SMBCONF_Init_Content
5456*/
5457SW_SMBCONF_Init_Content:
5458 call _SmbConfCreateShadowCopy
5459
5460 client_NTLMv2_auth = ZeroOne(IniGet('client NTLMv2 auth', 'global', samba.!shadowsmbconf))
5461 if client_NTLMv2_auth = 1 then do
5462 ok = VRSet("CB_client_NTLMv2_auth","Set",client_NTLMv2_auth)
5463 ok = VRSet("CB_client_lanman_auth","Enabled", 0)
5464 ok = VRSet("CB_client_plaintext_auth","Enabled", 0)
5465 end
5466 else do
5467 client_lanman_auth = ZeroOne(IniGet('client lanman auth', 'global', samba.!shadowsmbconf))
5468 client_plaintext_auth = ZeroOne(IniGet('client plaintext auth', 'global', samba.!shadowsmbconf))
5469 ok = VRSet("CB_client_lanman_auth","Set",client_lanman_auth)
5470 ok = VRSet("CB_client_plaintext_auth","Set",client_plaintext_auth)
5471 end
5472
5473 client_use_spnego = ZeroOne(IniGet('client use spnego', 'global', samba.!shadowsmbconf))
5474 ok = VRSet("CB_client_use_spnego","Set",client_use_spnego)
5475
5476 client_use_spnego_principal = ZeroOne(IniGet('client use spnego principal', 'global', samba.!shadowsmbconf))
5477 ok = VRSet("CB_client_use_spnego_principal","Set",client_use_spnego_principal)
5478
5479 client_max_protocol = IniGet('client max protocol', 'global', samba.!shadowsmbconf)
5480 if client_max_protocol = "" then do
5481 /* ok = VRSet("SPIN_client_max_protocol","Enabled", 0)
5482 ok = VRSet("DT_client_max_protocol","Enabled", 0) */
5483 end
5484 else ok = VRSet("SPIN_client_max_protocol","Value",client_max_protocol)
5485
5486 client_min_protocol = IniGet('client min protocol', 'global', samba.!shadowsmbconf)
5487 if client_min_protocol = "" then do
5488 /* ok = VRSet("SPIN_client_min_protocol","Enabled", 0)
5489 ok = VRSet("DT_client_min_protocol","Enabled", 0) */
5490 end
5491 else ok = VRSet("SPIN_client_min_protocol","Value",client_min_protocol)
5492
5493 client_signing = IniGet('client signing', 'global', samba.!shadowsmbconf)
5494 client_ipc_signing = IniGet('client ipc signing', 'global', samba.!shadowsmbconf)
5495say "client_signing ="client_signing
5496 ok = VRSet("SPIN_client_signing","Value",client_signing)
5497 ok = VRSet("SPIN_client_ipc_signing","Value",client_signing)
5498
5499 advanced.!smbconfchanged = 0
5500return
5501
5502/*:VRX SW_SMBTREE_Close
5503*/
5504SW_SMBTREE_Close:
5505 call SW_SMBTREE_Fini
5506return
5507
5508/*:VRX SW_SMBTREE_Create
5509*/
5510SW_SMBTREE_Create:
5511 call SW_SMBTREE_Init
5512return
5513
5514/*:VRX SW_SMBTREE_Fini
5515*/
5516SW_SMBTREE_Fini:
5517 window = VRInfo( "Window" )
5518 call VRDestroy window
5519 drop window
5520return
5521/*:VRX SW_SMBTREE_Init
5522*/
5523SW_SMBTREE_Init:
5524
5525return
5526
5527/*:VRX SW_SMBTREE_Init_Content
5528*/
5529SW_SMBTREE_Init_Content:
5530 if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 1)
5531
5532 /* Hide any "foreign" menu entries */
5533 ok = VRSet("Menu_Selected_Remove", "Visible", 0)
5534 ok = VRSet("Menu_Selected_Retry", "Visible", 0)
5535return
5536
5537/*:VRX TDL_1_PageSelected
5538*/
5539TDL_1_PageSelected:
5540 page = VRInfo("Page")
5541
5542 /* call _TabsStrip */
5543 select
5544 when page = 1 then do /* dialog */
5545 call _TabFix 1
5546 end
5547 when page = 2 then do /* advanced */
5548 call SW_ADVANCED_Init_Content
5549 end
5550 when page = 3 then do /* smbtree */
5551 call SW_SMBTREE_Init_Content
5552 end
5553 when page = 4 then do /* condet */
5554 call SW_CONDET_Init_Content
5555 end
5556 when page = 5 then do /* Settings */
5557 call SW_SETTINGS_Init_Content
5558 end
5559 when page = 6 then do /* SMB.CONF */
5560 call SW_SMBCONF_Init_Content
5561 end
5562 otherwise nop
5563 end
5564return
5565/*:VRX TM_AutoClose_Trigger
5566*/
5567TM_AutoClose_Trigger:
5568 call Quit
5569return
5570
5571/*:VRX TM_Progress_Throbber_Trigger
5572*/
5573TM_Progress_Throbber_Trigger:
5574 pIdx = VRGet("Pict_Progress_Throbber","PicturePath")
5575 parse var pIdx '#' pidx
5576 pidx = pidx + 1
5577 if pidx = 23 then pidx = 11
5578 ok = VRSet("Pict_Progress_Throbber","PicturePath","#"pidx)
5579return
5580
5581/*:VRX TM_RefreshCurrentDisplay_Trigger
5582*/
5583TM_RefreshCurrentDisplay_Trigger:
5584 if RefreshMode <> "" then return
5585 if _DaemonRunning() = 0 then do
5586 say " Daemon not running - disable GUI"
5587 ok = VRset("GB_CURRENT", "Enabled", 0)
5588 ok = VRset("TDL_1", "Enabled", 0)
5589 ok = VRSet("Menu_File_Daemon_Start","Enabled", 1)
5590 ok = VRSet("Menu_File_Daemon_Stop", "Enabled", 0)
5591 end
5592 else do
5593 say " Daemon running - enable GUI"
5594 ok = VRset("GB_CURRENT", "Enabled", 1)
5595 ok = VRset("TDL_1", "Enabled", 1)
5596 ok = VRSet("Menu_File_Daemon_Start","Enabled", 0)
5597 ok = VRSet("Menu_File_Daemon_Stop", "Enabled", 1)
5598 end
5599 CALL REFRESH
5600return
5601
5602/*:VRX TM_RefreshTreeDisplay_Trigger
5603*/
5604TM_RefreshTreeDisplay_Trigger:
5605 ShowHidden = advanced.!special
5606 BroadCast = advanced.!broadcast
5607 DoLMHosts = advanced.!lmhosts
5608
5609 select
5610 when RefreshMode = "TREE" then do
5611 call _RefreshTreeDisplay
5612
5613 if smbtree.!workgroup <> 'SMBTREE.!WORKGROUP' then do
5614 ok = VRset("Menu_Selected_Connect", "Visible", VRMethod("CN_SMBTREE", "ValidateRecord", smbtree.!workgroup ) )
5615 end
5616 end
5617 when RefreshMode = "SHARE" then do
5618 call _AddSharesDisplay
5619 end
5620 otherwise say "RefreshMode = "RefreshMode
5621 end
5622 call _DialogPopulate
5623return
5624
5625/*:VRX TM_TheCloser_Trigger
5626*/
5627TM_TheCloser_Trigger:
5628 call SW_PROGRESS_Close
5629return
5630
5631/*:VRX TM_Throbber_Trigger
5632*/
5633TM_Throbber_Trigger:
5634 pIdx = VRGet("Pict_Throbber","PicturePath")
5635 parse var pIdx '#' pidx
5636 pidx = pidx + 1
5637 if pidx = 23 then pidx = 11
5638 ok = VRSet("Pict_Throbber","PicturePath","#"pidx)
5639return
5640
5641/*:VRX YesNo
5642*/
5643YesNo: procedure
5644 if arg(1) = 1 then answer = "Yes"
5645 else answer = "No"
5646return answer
5647
5648/*:VRX ZeroOne
5649*/
5650ZeroOne: procedure
5651 if translate(arg(1)) = "YES" then answer = 1
5652 else answer = 0
5653return answer
Note: See TracBrowser for help on using the repository browser.