/*:VRX Main */ /* Main */ Main: /* Process the arguments. Get the parent window. */ parse source . calledAs . parent = "" argCount = arg() argOff = 0 if( calledAs \= "COMMAND" )then do if argCount >= 1 then do parent = arg(1) argCount = argCount - 1 argOff = 1 end end; else do call VROptions 'ImplicitNames' call VROptions 'NoEchoQuit' end InitArgs.0 = argCount if( argCount > 0 )then do i = 1 to argCount InitArgs.i = arg( i + argOff ) end drop calledAs argCount argOff /* Load the windows */ call VRInit parse source . . spec _VREPrimaryWindowPath = , VRParseFileName( spec, "dpn" ) || ".VRW" _VREPrimaryWindow = , VRLoad( parent, _VREPrimaryWindowPath ) drop parent spec if( _VREPrimaryWindow == "" )then do call VRMessage "", "Cannot load window:" VRError(), , "Error!" _VREReturnValue = 32000 signal _VRELeaveMain end /* Process events */ call Init signal on halt do while( \ VRGet( _VREPrimaryWindow, "Shutdown" ) ) _VREEvent = VREvent() interpret _VREEvent end _VREHalt: _VREReturnValue = Fini() call VRDestroy _VREPrimaryWindow _VRELeaveMain: call VRFini exit _VREReturnValue VRLoadSecondary: __vrlsWait = abbrev( 'WAIT', translate(arg(2)), 1 ) if __vrlsWait then do call VRFlush end __vrlsHWnd = VRLoad( VRWindow(), VRWindowPath(), arg(1) ) if __vrlsHWnd = '' then signal __vrlsDone if __vrlsWait \= 1 then signal __vrlsDone call VRSet __vrlsHWnd, 'WindowMode', 'Modal' __vrlsTmp = __vrlsWindows.0 if( DataType(__vrlsTmp) \= 'NUM' ) then do __vrlsTmp = 1 end else do __vrlsTmp = __vrlsTmp + 1 end __vrlsWindows.__vrlsTmp = VRWindow( __vrlsHWnd ) __vrlsWindows.0 = __vrlsTmp do while( VRIsValidObject( VRWindow() ) = 1 ) __vrlsEvent = VREvent() interpret __vrlsEvent end __vrlsTmp = __vrlsWindows.0 __vrlsWindows.0 = __vrlsTmp - 1 call VRWindow __vrlsWindows.__vrlsTmp __vrlsHWnd = '' __vrlsDone: return __vrlsHWnd /*:VRX __VXREXX____APPENDS__ */ __VXREXX____APPENDS__: /* #append U:\Develop\Samba\guitools-2.0\shared\cltinit.vrs #append U:\Develop\Samba\guitools-2.0\shared\inittempdir.vrs #append U:\Develop\Samba\guitools-2.0\shared\nlv.vrs #append U:\Develop\Samba\guitools-2.0\shared\rexx_md5.vrs #append U:\Develop\Samba\guitools-2.0\shared\smbtree.vrs #append U:\Develop\Samba\guitools-2.0\shared\textini.vrs */ return /*:VRX _AddTemplates */ _AddTemplates: VolTplRH = VRMethod('CN_CURRENT', 'AddRecord', , 'First', 'Volume template', '#10:PMWP.DLL' ) MpTplRH = VRMethod('CN_CURRENT', 'AddRecord', VolTplRH, 'First', 'Mountpoint template', '#10:PMWP.DLL' ) return /*:VRX _BrowseBuildPath */ _BrowseBuildPath: procedure expose options. sharerh IF options.!debug == 1 THEN SAY time()' _BrowseBuildPath started' rh = arg(1) finished = 0 BrowsePathStr = '' do while \finished parentrh = VRMethod("CN_smbtree","GetRecordAttr",rh,"Parent") resname = VRMethod("CN_smbtree","GetRecordAttr",rh,"caption") userdata = VRMethod("CN_smbtree","GetRecordAttr",rh,"userdata") parse var userdata udatatype '|' udatamsg parse var resname resname '0D0A'x . resname = strip(resname) /* say " Not connected - cannot open!" */ select when udatatype = "SERVER" then do BrowsePathStr = '\\'resname'\'BrowsePathStr finished = 1 end when udatatype = "DISK" then do BrowsePathStr = resname'\'BrowsePathStr sharerh =rh rh = parentrh end otherwise do BrowsePathStr = resname'\'BrowsePathStr rh = parentrh end end /* say ' BrowsePathStr = "'BrowsePathStr'"' */ end BrowsePathStr = strip(BrowsePathStr,'T','\') IF options.!debug == 1 THEN SAY time()' _BrowseBuildPath done, returning "'BrowsePathStr'"' return BrowsePathStr /*:VRX _BrowseDirectory */ _BrowseDirectory: /* This must not be a procedure */ IF options.!debug == 1 THEN SAY time()' _BrowseDirectory started' /* Turn off painting */ ok = VRSet("CN_SMBTREE","Painting", 0 ) call VRSet VRWindow(), 'Pointer', 'Wait' /* Make sure credentials are usable */ if UserCred = 'USERCRED' | UserCred = '' | UserCred = '--user=%' then UserCred = '-N' say ' 'samba.!smbclientexe' \\'machine'\'sharename' 'UserCred' --command="dir 'browsepath'"' address cmd samba.!smbclientexe' \\'machine'\'sharename' 'UserCred' --command="dir 'browsepath'" 'debuglevel' 2>NUL 1>'samba.!msg if UserCred = '-N' then UserCred = '' I = 0 ok = VRSet("DT_STATUSBAR","Caption", "") do until lines(samba.!msg) = 0 infoline = linein(samba.!msg) select when pos('blocks',infoline) > 0 then do /* Last line */ /* we should handle size information here */ iterate end when I = 0 & length(infoline) > 0 & left(infoline,2) <> " " then do /* Login message */ say ' Login message "'Infoline'"' ok = VRMethod("CN_SMBTREE", "SetRecordAttr", SMBObj.rh, "Userdata", SMBObj.udatatype'|'infoline ) ok = VRSet("DT_STATUSBAR","Caption", infoline) end when left(infoline,2) = " " & length(infoline) > 0 then do /* file or DIR */ wn = words(infoline) fyear = word(infoline,wn) ftime = word(infoline,wn-1) fday = word(infoline,wn-2) fmonth = word(infoline,wn-3) fwday = word(infoline,wn-4) pos_attr = pos(fwday,infoline)-16 fsize = word(infoline,wn-5) fattr = substr(infoline,pos_attr,6) fname = strip( substr(infoline,3,pos_attr-3)) if fname = '.' | fname = '..' then iterate /* we do not display these */ if pos('H',fattr) > 0 then iterate /* we do not display hidden files */ if pos('S',fattr) > 0 then iterate /* we do not display system files */ I = I + 1 fh.I = VRMethod( "CN_SMBTREE", "AddRecord", SMBObj.rh, , fname) if pos('D',fattr) = 0 then do Ext = translate(VRParseFIleName(fname,'E')) select when Ext = 'EXE' then ficon = '#3:PMWP.DLL' /* executable */ when Ext = 'CMD' then ficon = '#2:PMWP.DLL' /* OS/2 or NT batch */ when Ext = 'BAT' then ficon = '#1:PMWP.DLL' /* DOS batch */ when Ext = 'PDF' then ficon = '#80' /* PDF document */ when wordpos(Ext, 'XLS SXC ODS') > 0 then ficon = '#82' /* spreadsheet */ when wordpos(Ext, 'DOC SXW ODT') > 0 then ficon = '#86' /* text document */ when wordpos(Ext, 'FW2 FW3 FW4') > 0 then ficon = '#87' /* framework */ when wordpos(Ext, 'JPG BMP PNG GIF TIF') > 0 then ficon = '#88' /* image */ when wordpos(Ext, 'AVI MPG FLV WMV') > 0 then ficon = '#89' /* image */ when wordpos(Ext, 'WAV MP3 OGG MID') > 0 then ficon = '#90' /* sound */ when wordpos(Ext, 'WPI') > 0 then ficon = '#91' /* warpin */ when wordpos(Ext, 'ZIP') > 0 then ficon = '#92' /* zip */ when wordpos(Ext, 'INF HLP') > 0 then ficon = '#93' /* View */ when wordpos(Ext, 'TXT') > 0 then ficon = '#94' /* View */ otherwise ficon = '#24:PMWP.DLL' /* default file icon */ end ftype = 'FILE' end else do ficon = '#26:PMWP.DLL' /* dir */ ftype = 'DIRECTORY' end ok = VRmethod("CN_SMBTREE", "SetRecordAttr", fh.I, "userdata", ftype'|'fsize' Bytes 'fday'-'fmonth'-'fyear' 'ftime,'icon',Ficon) end otherwise nop /* no other line type */ end end if I > 0 then ok = VRMethod("CN_SMBTREE","SetRecordAttr",SMBObj.rh, "Icon", "#34:PMWP.DLL") /* open folder */ ok = stream(samba.!msg,'c','close') ok = SysFileDelete(samba.!msg) ok = VRMethod( "CN_SMBTREE", "SetRecordAttr", SMBObj.rh,"Collapsed", 0) /* Turn on painting */ call VRSet VRWindow(), 'Pointer', '' ok = VRSet("CN_SMBTREE","Painting", 1 ) IF options.!debug == 1 THEN SAY time()' _BrowseDirectory done' return /*:VRX _BrowseObjectOpen */ _BrowseObjectOpen: procedure expose options. cd. machine = arg(1) sharename = arg(2) browsepath = arg(3) CALL VRMethod 'CN_CONDET', 'GetRecordList', 'All', 'records.' OpenOk = 0 DO i = 1 TO records.0 if VRMethod( 'CN_CONDET', "GetFieldData", records.i, CD.StatusFH) = "#64:PMWP.DLL" then do 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) if machine = VRMethod( 'CN_CONDET', "GetFieldData", records.i, CD.ServerFH) &, sharename = VRMethod( 'CN_CONDET', "GetFieldData", records.i, CD.ShareFH) then do Object = strip(VRMethod( 'CN_CONDET', "GetFieldData", records.i, CD.MPointFH),'T','\')'\'browsepath IF options.!debug == 1 THEN SAY ' Non UNC object: "'Object'"' ID = VRMethod( "Application", "StartThread", "wps_open", Object, "DEFAULT" ) OpenOK = 1 end end if OpenOK = 1 then leave end return OpenOK /*:VRX _BrowseResetObject */ _BrowseResetObject: procedure ok = VRSet("CN_SMBTREE","Painting", 0 ) rh = arg(1) /* Remove all files and directories whose parent is our share */ ok = VRMethod( "CN_SMBTREE", "GetRecordList", "All", "AllRH." ) do I = 1 to AllRH.0 AllParentRH = VRMethod("CN_smbtree","GetRecordAttr",AllRH.I,"Parent") if AllParentRH = rh then ok = VRMethod( "CN_SMBTREE", "RemoveRecord", AllRH.I ) end ok = VRSet("CN_SMBTREE","Painting", 1 ) return /*:VRX _ContainersInit */ _ContainersInit: /* Connection details */ CD.StatusFH = VRMethod( "CN_CONDET", "AddField", "Icon", "Status" ) CD.mpointFH = VRMethod( "CN_CONDET", "AddField", "String", "mpoint" ) CD.mpidxFH = VRMethod( "CN_CONDET", "AddField", "String", "index" ) CD.workgroupFH = VRMethod( "CN_CONDET", "AddField", "String", "workgroup" ) CD.serverFH = VRMethod( "CN_CONDET", "AddField", "String", "server" ) CD.shareFH = VRMethod( "CN_CONDET", "AddField", "String", "share" ) CD.userFH = VRMethod( "CN_CONDET", "AddField", "String", "user" ) CD.passwordFH = VRMethod( "CN_CONDET", "AddField", "String", "password" ) CD.spasswordFH = VRMethod( "CN_CONDET", "AddField", "String", "spassword" ) CD.masterFH = VRMethod( "CN_CONDET", "AddField", "String", "master" ) CD.mtypeFH = VRMethod( "CN_CONDET", "AddField", "String", "mastertype" ) CD.memlenFH = VRMethod( "CN_CONDET", "AddField", "String", "memlen" ) CD.easupportFH = VRMethod( "CN_CONDET", "AddField", "String", "easupport" ) CD.logfileFH = VRMethod( "CN_CONDET", "AddField", "String", "logfile" ) CD.loglevelFH = VRMethod( "CN_CONDET", "AddField", "String", "loglevel" ) CD.rwFH = VRMethod( "CN_CONDET", "AddField", "String", "readonly" ) CD.hashFH = VRMethod( "CN_CONDET", "AddField", "String", "hash" ) /* Connection details */ ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpidxfh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.passwordfh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.spasswordfh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.masterFH , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mtypeFH , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.memlenfh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.logfilefh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.loglevelfh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.hashfh , "Visible", 0) ok = VRSet("CN_CONDET", "DetailSort", cd.mpointfh ) /* NLV columns */ ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.statusfh , "Title", strip(NLVGetMessage(67),"T",":")) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpointfh , "Title", strip(NLVGetMessage(27),"T",":")) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.workgroupfh , "Title", strip(NLVGetMessage(21),"T",":")) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.serverFH , "Title", strip(NLVGetMessage(19),"T",":")) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.shareFH , "Title", strip(NLVGetMessage(20),"T",":")) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.userfh , "Title", strip(NLVGetMessage(25),"T",":")) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.easupportfh , "Title", strip(NLVGetMessage(68),"T",":")) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.rwfh , "Title", strip(NLVGetMessage(69),"T",":")) return /*:VRX _CreateSmbConf */ _CreateSmbConf: IF options.!debug == 1 THEN SAY time()' '||"_CreateSmbConf started" call lineout samba.!smbconf, '# Samba config file created using EVFSGUI ver. 'word(VRGet("Main","Hinttext"),2) call lineout samba.!smbconf, '# from 'value("USER",,'OS2ENVIRONMENT')'@'value("HOSTNAME",,'OS2ENVIRONMENT') call lineout samba.!smbconf, '# Date: 'date()' 'time() call lineout samba.!smbconf, '[global]' if settings.!network <> '' then do call lineout samba.!smbconf, '09'x||'workgroup = 'settings.!network end else do call lineout samba.!smbconf, '09'x||'workgroup = WORKGROUP' end call lineout samba.!smbconf, '09'x||'log level = 0' ok = stream(samba.!smbconf,'c','close') IF options.!debug == 1 THEN SAY time()' '||"_CreateSmbConf done" return /*:VRX _DialogPopulate */ _DialogPopulate: ok = VRMethod( "CN_smbtree", "GetRecordList", "Visible", "rh." ) ok = VRMethod("EF_SHARE", "Reset") ok = VRMethod("EF_SERVER", "Reset") ok = VRMethod("EF_NETWORK", "Reset") do I = 1 to rh.0 Userdata = VRMethod("CN_smbtree","GetRecordAttr",rh.I,"Userdata") ResName = VRMethod("CN_smbtree","GetRecordAttr",rh.I,"Caption") parse var ResName ResName '0D0A'x . ResName = strip(ResName) parse var userdata ResType '|' . select when ResType = "WORKGROUP" then ok = VRMethod("EF_NETWORK","AddString", ResName) when ResType = "SERVER" then ok = VRMethod("EF_SERVER", "AddString", ResName) when ResType = "DISK" then ok = VRMethod("EF_SHARE", "AddString", ResName) otherwise nop end end return /*:VRX _dropdeprecated */ _dropdeprecated: drop rh drop parentrh drop icon drop resname drop udatatype drop udatamsg return /*:VRX _GetSMBObjectProperties */ _GetSMBObjectProperties: procedure expose options. SMBObj. rh icon resname udatatype udatamsg parentrh IF options.!debug == 1 THEN SAY time()' _GetSMBObjectProperties started' /* Purpose of this subroutine: The current SMB object's frequently used properties should be stored in a stem SMBObj.rh = recordhandle of the object SMBObj.resname = resourcename of the object SMBObj.icon = icon of the object SMBObj.udatatype = type of object (WORKGROUP, SERVER, DISK, PRINTER, FILE, DIRECTORY) SMBObj.udatamsg = arbitrary object related data (Login message, file properties) SMBObj.parentrh = recordhandle of the object's parent The stem-less counterparts of these variables are considered deprecated and should be removed wherever possible This routine will drop any value in order to make sure the stem actually works */ call _dropdeprecated SMBObj. = "" SMBObj.rh = arg(1) if VRMethod( 'CN_SMBTREE', "ValidateRecord", SMBObj.rh) <> 1 | SMBObj.rh = "" then do SMBObj. = "" IF options.!debug == 1 THEN SAY time()' _GetSMBObjectProperties aborted' return end SMBObj.Icon = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.rh, "Icon") SMBObj.parentrh = VRMethod("CN_SMBTREE", "GetRecordAttr", SMBObj.rh, "Parent") SMBObj.resname = VRMethod("CN_smbtree", "GetRecordAttr", SMBObj.rh, "Caption") parse var SMBObj.resname SMBObj.resname '0D0A'x . SMBObj.resname = strip(SMBObj.resname) Userdata = VRMethod("CN_smbtree", "GetRecordAttr", SMBObj.rh, "Userdata") parse var userdata SMBObj.udatatype '|' SMBObj.udatamsg SMBObj.udatatype = strip(SMBObj.udatatype) SMBObj.udatamsg = strip(SMBObj.udatamsg) IF options.!debug == 1 THEN do SAY ' Handle: "'SMBObj.rh'"' SAY ' Resource: "'SMBObj.resname'"' SAY ' Type: "'SMBObj.udatatype'"' SAY ' Message: "'SMBObj.udatamsg'"' SAY ' Icon: "'SMBObj.icon'"' end IF options.!debug == 1 THEN SAY time()' _GetSMBObjectProperties done' return /*:VRX _GUIInit */ _GUIInit: CALL VRSet 'Main', 'HelpFile', settings.!helpfile CALL NLVSetText 'Main', 'Caption', 1 CALL NLVSetText 'DT_CURRENT', 'Caption', 10 CALL NLVSetText 'PB_DETACH', 'Caption', 11 CALL NLVSetText 'PB_UNMOUNT', 'Caption', 12 CALL NLVSetText 'DT_DIALOG', 'Caption', 13 CALL NLVSetText 'DT_MOUNT', 'Caption', 14 CALL NLVSetText 'DT_SERVER', 'Caption', 19 CALL NLVSetText 'DT_SHARE', 'Caption', 20 CALL NLVSetText 'CHK_MTYPE', 'Caption', 23 CALL NLVSetText 'PB_ADVANCED', 'Caption', 24 CALL NLVSetText 'DT_USER', 'Caption', 25 CALL NLVSetText 'DT_PASSWORD', 'Caption', 26 CALL NLVSetText 'DT_MPOINT', 'Caption', 27 CALL NLVSetText 'PB_MOUNT', 'Caption', 28 CALL NLVSetText 'PB_EDITCANCEL','Caption', 3 CALL NLVSetText 'PB_AUTOSTART','Caption', 35 CALL NLVSetText 'PB_CLOSE', 'Caption', 29 CALL NLVSetText 'PB_SAVE', 'Caption', 30 CALL NLVSetText 'PB_LOAD', 'Caption', 31 CALL NLVSetText 'PB_HELP', 'Caption', 4 CALL NLVSetText 'MENU_CONTEXT_DETACH', 'Caption', 11 CALL NLVSetText 'MENU_CONTEXT_DETACH_ALL', 'Caption', 120 CALL NLVSetText 'MENU_CONTEXT_REFRESH', 'Caption', 38 CALL NLVSetText 'MENU_CONTEXT_UNMOUNT', 'Caption', 12 CALL NLVSetText 'MENU_CONTEXT_EDIT', 'Caption', 32 CALL NLVSetText 'MENU_CONTEXT_OPEN', 'Caption', 94 CALL NLVSetText 'MENU_CONTEXT_OPEN_ICON', 'Caption', 95 CALL NLVSetText 'MENU_CONTEXT_OPEN_TREE', 'Caption', 96 CALL NLVSetText 'MENU_CONTEXT_OPEN_DETAIL', 'Caption', 97 CALL NLVSetText 'MENU_CONTEXT_OPEN_SETTINGS', 'Caption', 98 CALL NLVSetText 'MENU_CONTEXT_OPEN_SPLITVIEW','Caption', 99 CALL NLVSetText 'Menu_File', 'Caption', 80 CALL NLVSetText 'Menu_Context', 'Caption', 81 CALL NLVSetText 'Menu_View', 'Caption', 82 CALL NLVSetText 'Menu_Selected', 'Caption', 83 CALL NLVSetText 'Menu_Help', 'Caption', 84 CALL NLVSetText 'Menu_View_Dialog', 'Caption', 85 CALL NLVSetText 'Menu_View_SmbTree', 'Caption', 86 CALL NLVSetText 'Menu_View_Buttons', 'Caption', 87 CALL NLVSetText 'Menu_View_ConDet', 'Caption', 88 CALL NLVSetText 'Menu_View_MiniIcons','Caption', 70 CALL NLVSetText 'Menu_File_Autostart', 'Caption', 35 CALL NLVSetText 'Menu_File_Autostart_Activate', 'Caption', 76 CALL NLVSetText 'Menu_File_Autostart_Deactivate','Caption', 77 CALL NLVSetText 'Menu_File_CLOSE', 'Caption', 29 CALL NLVSetText 'Menu_File_SAVE', 'Caption', 30 CALL NLVSetText 'Menu_File_LOAD', 'Caption', 31 CALL NLVSetText 'Menu_File_SETTINGS', 'Caption', 47 CALL NLVSetText 'Menu_File_ADVANCED', 'Caption', 40 CALL NLVSetText 'Menu_Selected_Connect', 'Caption', 28 CALL NLVSetText 'Menu_Selected_Remove', 'Caption', 12 CALL NLVSetText 'Menu_Selected_Retry', 'Caption', 90 CALL NLVSetText 'Menu_Selected_Info', 'Caption', 92 CALL NLVSetText 'Menu_Selected_Default_Workgroup','Caption',75 CALL NLVSetText 'Menu_Help_Extended', 'Caption', 4 CALL NLVSetText 'Menu_Help_About', 'Caption', 91 CALL NLVSetText 'DT_SMBTREE', 'Caption', 39 CALL NLVSetText 'PB_CONNECT', 'Caption', 28 CALL NLVSetText 'PB_REFRESH', 'Caption', 38 CALL NLVSetText 'DT_CONDET', 'Caption', 63 CALL NLVSetText 'PB_CONDET_SAVE', 'Caption', 30 CALL NLVSetText 'PB_CONDET_LOAD', 'Caption', 31 mtype.0 = 4 mtype.1 = NLVGetMessage( 15 ) mtype.2 = NLVGetMessage( 16 ) mtype.3 = NLVGetMessage( 17 ) mtype.4 = NLVGetMessage( 18 ) IF (mtype.1 \= '' & mtype.2 \= '' & mtype.3 \= '' & mtype.4 \= '') THEN DO CALL VRMethod CB_MOUNT, 'Clear' CALL VRMethod CB_MOUNT, 'AddStringList', 'mtype.' END ok = VRSet("Main","Width", 8200) ok = VRseT("Pict_Throbber","Width", VRMethod( "Screen", "PixelsToTwips", 32 )) ok = VRseT("Pict_Throbber","Height", VRMethod( "Screen", "PixelsToTwips", 32 )) /* Setup SmbTree View */ ok = VRset("GB_SMBTREE","Painting", 0) /* Common margin around controls */ margin = ((VRGet("Main", "InteriorLeft") / 3) * 2) + 2 ok = VRSet("DT_STATUSBAR", "Caption", VRGet("Main", "HintText")) call Main_Resize return /*:VRX _PassiveLoad */ _PassiveLoad: IF options.!debug == 1 THEN SAY time()' '||"_PassiveLoad started" do cnt = 1 to 255 resdata = VRGetIni( "PassiveConnections", cnt, settings.!ini ) if resdata = "" then leave PARSE Var resdata p_mpoint resource rwFlag IF options.!debug == 1 THEN do say " resdata ="resdata say " p_mpoint ="p_mpoint say " resource ="resource say " rwFlag ="rwFlag end /* vfs.!drive = FILESPEC('DRIVE', node ) vfs.!mountpoint = STRIP( node, 'T', '\') */ /* In case we only have a volume we reattach the backslash, otherwise restore will fail */ if vfs.!drive = vfs.!mountpoint then vfs.!mountpoint = vfs.!mountpoint||'\' p_mpidx = "" PARSE VAR resource . 'WORKGROUP=' p_workgroup ';' . PARSE VAR resource . 'SERVER=' p_server ';' . PARSE VAR resource . 'SHARE=' p_share ';' . PARSE VAR resource . 'USER=' p_user ';' . PARSE VAR resource . 'PASSWORD=' p_password ';' . PARSE VAR resource . 'SPASSWORD=' p_spassword ';' . PARSE VAR resource . 'MASTER=' p_master ';' . PARSE VAR resource . 'MASTERTYPE=' p_mtype ';' . /* PARSE VAR resource . 'MEMLEN=' p_memlen ';' . PARSE VAR resource . 'LOGFILE=' p_logfile ';'. PARSE VAR resource . 'LOGLEVEL=' p_loglevel ';' . */ PARSE VAR resource . 'EASUPPORT=' p_easupport . p_rw = rwFlag cd.lastrh = VRMethod("CN_CONDET","AddRecord") IF options.!debug == 1 THEN say " cd.lastrh = "cd.lastrh ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mpointFH, p_mpoint, cd.mpidxfh, p_mpidx) ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.workgroupfh, p_workgroup, cd.serverfh, p_server, cd.sharefh, p_share) ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.userfh, p_user, cd.passwordfh, p_password, cd.spasswordfh, p_spassword) ok = VRMethod("CN_CONDET", "SetFieldData", cd.masterfh, p_master, cd.mtypefh, p_mtype, cd.lastrh, cd.easupportfh, p_easupport, cd.rwfh, p_rw) /* ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.memlenfh, p_memlen, cd.logfilefh, p_logfile, cd.loglevelfh, p_loglevel ) */ ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, '#68:PMWP.DLL') /* Passive */ ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", '#68:PMWP.DLL') /* Active */ hashstr = p_mpoint' 'translate(p_domain)' 'translate(p_server)' 'translate(p_share)' 'p_user' 'p_spassword' 'p_easupport' 'p_rw md5 = rexx_md5(hashstr) ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.hashfh,md5) end IF options.!debug == 1 THEN SAY time()' '||"_PassiveLoad done" return /*:VRX _PassiveSave */ _PassiveSave: IF options.!debug == 1 THEN SAY time()' '||"_PassiveSave started" ok = VRDelIni( "PassiveConnections", "ALL", settings.!ini ) ok = SysIni(settings.!ini, 'PassiveConnections', 'DELETE:') CALL VRMethod 'CN_CONDET', 'GetRecordList', 'All', 'records.' cnt = 0 DO i = 1 TO records.0 if VRMethod( 'CN_CONDET', "GetFieldData", records.i, CD.StatusFH) = '#68:PMWP.DLL' then do cnt = cnt + 1 resdata = "" resdata = resdata||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mpointfh)||" " resdata = resdata||'\\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgroupfh) resdata = resdata||':'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh) resdata = resdata||'\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh) resdata = resdata||'@'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh) resdata = resdata||';WORKGROUP='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgroupfh) resdata = resdata||';SERVER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh) resdata = resdata||';SHARE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh) resdata = resdata||';USER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh) resdata = resdata||';PASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.passwordfh) resdata = resdata||';SPASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.spasswordfh) resdata = resdata||';MASTER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.masterfh) resdata = resdata||';MASTERTYPE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mtypefh) /* resdata = resdata||';MEMLEN='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.memlenfh) resdata = resdata||';LOGFILE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.logfilefh) resdata = resdata||';LOGLEVEL='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.loglevelfh) */ resdata = resdata||';EASUPPORT='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.easupportfh) resdata = resdata||' '||VRMethod("CN_CONDET","GetFieldData", records.i, cd.rwfh) ok = VRSetIni( "PassiveConnections", cnt, resdata, settings.!ini ) END else iterate end IF options.!debug == 1 THEN SAY time()' '||"_PassiveSave done" return /*:VRX _PrinterInfo */ _PrinterInfo: /* rh = currently selected record handle */ capt = VRMethod("CN_SMBTREE", "GetRecordAttr", rh, "Caption") parse var Capt p_printer '0D0A'x . parRH = VRMethod("CN_SMBTREE", "GetRecordAttr", rh, "Parent") capt = VRMethod("CN_SMBTREE", "GetRecordAttr", Parrh, "Caption") parse var Capt p_prtsrv '0D0A'x . p_prtsrv = strip(p_prtsrv) GparRH = VRMethod("CN_SMBTREE", "GetRecordAttr", Parrh, "Parent") capt = VRMethod("CN_SMBTREE", "GetRecordAttr", GParrh, "Caption") parse var Capt p_workgroup '0D0A'x . DescStr = translate(p_prtsrv'#'p_printer'#'p_workgroup'#') say '"'DescStr'"' LDescStr = length(DescStr) ok = SysIni('SYSTEM','PM_SPOOLER_PORT',"All:",'ports') FoundPort = 0 do I = 1 to ports.0 if left(ports.i,3) = 'SMB' then do say ports.I say translate(left(SysIni('SYSTEM','PM_'ports.I,'INITIALIZATION'),LDescStr)) say DescStr if translate(left(SysIni('SYSTEM','PM_'ports.I,'INITIALIZATION'),LDescStr)) = DescStr then do OurPort = ports.I FoundPort = 1 leave end end end if Foundport then do ok = SysIni('SYSTEM','PM_SPOOLER_PRINTER',"All:",'printer') do I = 1 to printer.0 say printer.I prtsummary = SysINi('SYSTEM','PM_SPOOLER_PRINTER',printer.i) parse var prtsummary port ';'PrinterDriver';'PrinterQueue';' . if port = ourPort then do PrinterName = SysINi('SYSTEM','PM_SPOOLER_PRINTER_DESCR',printer.i) parse var Printername Printername ';' . leave end end CALL VRMessage 'Main', PrinterName' ('PrinterQueue') prints to port ' Port' connected to \\'p_workgroup'\'p_prtsrv'\'p_printer, NLVGetMessage( 1 ), 'I' end else do CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E' end return /*:VRX _ShowMsg */ _ShowMsg: /* preliminary implementation - we just do not ignore it anymore - - ShowMsg from smbmon/smbusers shoule become a shared library */ ok = VRSet("DT_StatusBar", "Caption", Msg.Text) return /*:VRX _UserCredUpdate */ _UserCredUpdate: credentials.!username = VRGet("EF_USER","Value") credentials.!password = VRGet("EF_PASSWORD","Value") if pos("4OS2", value("COMSPEC",,"OS2ENVIRONMENT")) = 0 then UserCred = '--user='Credentials.!username'%'Credentials.!password else UserCred = '--user='Credentials.!username'%%'Credentials.!password return /*:VRX CB_DEBUG_Click */ CB_DEBUG_Click: return /*:VRX CB_LOGGING_Click */ CB_LOGGING_Click: if VRFileExists(SysBootDrive()'\ndpsmb.dbg') then ok = SysFileDelete(SysBootDrive()'\ndpsmb.dbg') else do call lineout SysBootDrive()'\ndpsmb.dbg','EVFS debug flag file' ok = stream(SysBootDrive()'\ndpsmb.dbg','c','close') end CALL VRSet 'CB_LOGGING', 'Set', VRFileExists(SysBootDrive()'\ndpsmb.dbg') return /*:VRX CB_MOUNT_Change */ CB_MOUNT_Change: IF options.!debug == 1 THEN SAY time()' '||"CB_MOUNT_Change started" mount = VRGet("CB_MOUNT", "Selected") SELECT WHEN mount == 1 THEN DO CALL VRSet "DT_SHARE", "Visible", 1 CALL VRSet "EF_SHARE", "Visible", 1 CALL VRSet "DT_SERVER", "Visible", 1 CALL VRSet "EF_SERVER", "Visible", 1 CALL VRSet "CHK_MTYPE", "Visible", 0 CALL NLVSetText "DT_NETWORK", "Caption", 21 /* Does not make sense anymore if options.!editmode = 0 Then CALL VRSet "EF_NETWORK", "Value", settings.!network */ END WHEN mount == 2 THEN DO CALL VRSet "DT_SHARE", "Visible", 0 CALL VRSet "EF_SHARE", "Visible", 0 CALL VRSet "DT_SERVER", "Visible", 1 CALL VRSet "EF_SERVER", "Visible", 1 CALL VRSet "CHK_MTYPE", "Visible", 0 CALL NLVSetText "DT_NETWORK", "Caption", 21 /* Does not make sense anymore CALL VRSet "EF_NETWORK", "Value", settings.!network */ END WHEN mount == 3 THEN DO CALL VRSet "DT_SHARE", "Visible", 0 CALL VRSet "EF_SHARE", "Visible", 0 CALL VRSet "DT_SERVER", "Visible", 0 CALL VRSet "EF_SERVER", "Visible", 0 CALL VRSet "CHK_MTYPE", "Visible", 0 CALL NLVSetText "DT_NETWORK", "Caption", 21 /* Does not make sense anymore CALL VRSet "EF_NETWORK", "Value", settings.!network */ END WHEN mount == 4 THEN DO CALL VRSet "DT_SHARE", "Visible", 0 CALL VRSet "EF_SHARE", "Visible", 0 CALL VRSet "DT_SERVER", "Visible", 0 CALL VRSet "EF_SERVER", "Visible", 0 CALL VRSet "CHK_MTYPE", "Visible", 1 CALL NLVSetText "DT_NETWORK", "Caption", 22 /* Does not make sense anymore CALL VRSet "EF_NETWORK", "Value", "" */ END END IF options.!debug == 1 THEN SAY time()' '||"CB_MOUNT_Change done" RETURN /*:VRX CN_CONDET_Click */ CN_CONDET_Click: ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText")) return /*:VRX CN_CONDET_ContextMenu */ CN_CONDET_ContextMenu: rh = VRInfo('Record') if VRMethod( 'CN_CONDET', "ValidateRecord", rh) <> 1 then return /* This is the place to enable specific context menu entries */ ok = VRMethod( "CN_CONDET", "GetRecordList", "All", "records." ) ok = VRSet("Menu_Selected_Remove", "Visible", (records.0 <> 0)) ok = VRSet("Menu_Selected_Retry", "Visible", (records.0 <> 0)) if VRMethod( 'CN_CONDET', "GetFieldData", rh, CD.StatusFH) = '#68:PMWP.DLL' then do ok = VRSet("Menu_Selected_Retry", "Enabled",1) ok = VRSet("Menu_Selected_Remove", "Enabled",1) end ok = VRMethod( "Menu_Selected", "Popup", , , "", "" ) return /*:VRX CN_CONDET_DragStart */ CN_CONDET_DragStart: obj = VRInfo( "object" ) ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "selrec." ) if selrec.0 = 0 then return Icon = VRMethod("CN_CONDET", "GetRecordAttr", selrec.1, "Icon") if Icon = "#65:PMWP.DLL" then do /* Printers not supported at the moment */ CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E' end else call VRMethod obj, 'StartDrag' return /*:VRX CN_CURRENT_Click */ CN_CURRENT_Click: IF options.!debug == 1 THEN SAY time()' CN_CURRENT_Click started' ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText")) /* Herwig B. */ CALL VRSet "TM_AUTOCLOSE", "ENABLED", 0 rh = VRInfo('Record') if VRMethod( 'CN_CURRENT', "ValidateRecord", rh) <> 1 then return data = VRMethod('CN_CURRENT', 'GetRecordAttr', rh, 'UserData') options.currentdata = data ok = VRset("DT_StatusBar","Caption", data' - 'VRGet("Main", "HintText")) PARSE VAR data p_node ';' p_mounts ';' p_string IF options.!debug == 1 THEN do SAY ' data = "'data'"' SAY ' p_node = "'p_node'"' SAY ' p_mounts = "'p_mounts'"' SAY ' p_string = "'p_string'"' end /* infotext = p_node DO i = 1 TO p_mounts infotext = infotext ' ['p_string']' END */ if p_string = "" then infotext = fs.!name' 'fs.!version else infotext = p_string /* Herwig B. CALL VRSet 'Main', 'StatusText', infotext */ if infotext = "" then infotext = " " CALL VRSet 'CN_CURRENT', 'Caption', infotext CALL VRSet 'CN_CURRENT', 'HintText',infotext /* Herwig B. */ IF p_mounts > 0 THEN DO CALL VRSet 'PB_UNMOUNT', 'Enabled', 1 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 1 if pos("*",p_string) > 0 | pos(";",p_string) > 0 then CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0 else CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 1 END ELSE DO CALL VRSet 'PB_UNMOUNT', 'Enabled', 0 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 0 CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0 END parent = VRMethod('CN_CURRENT', 'GetRecordAttr', rh, 'Parent') IF parent == '' THEN DO CALL VRSet 'PB_DETACH', 'Enabled', 1 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 1 END ELSE DO CALL VRSet 'PB_DETACH', 'Enabled', 0 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 0 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 0 CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 0 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 0 CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 0 END parse var p_string p_domain':\\'p_server'\'p_share ok = VRSet("EF_Server","Value", p_server) IF options.!debug == 1 THEN SAY time()' CN_CURRENT_Click done' RETURN /*:VRX CN_CURRENT_ContextMenu */ CN_CURRENT_ContextMenu: /* PROCEDURE EXPOSE existrec. options. fs. */ IF options.!debug == 1 THEN SAY time()' '||"CN_CURRENT_ContextMenu started" CALL VRSet "TM_AUTOCLOSE", "ENABLED", 0 rh = VRInfo('Record') /* we have to check whether the record still exists because under certain circumstances the event routine is executed after the record was already removed */ if VRMethod( 'CN_CURRENT', "ValidateRecord", rh) <> 1 then do IF options.!debug == 1 THEN SAY time()' '||"CN_CURRENT_ContextMenu aborted" return end data = VRMethod('CN_CURRENT', 'GetRecordAttr', rh, 'UserData') PARSE VAR data p_node ';' p_mounts ';' p_string IF options.!debug == 1 THEN do SAY ' data = "'data'"' SAY ' p_node = "'p_node'"' SAY ' p_mounts = "'p_mounts'"' SAY ' p_string = "'p_string'"' end /* infotext = p_node DO i = 1 TO p_mounts infotext = infotext ' ['p_string']' END */ if p_string = "" then infotext = fs.!name' 'fs.!version else infotext = p_string /* Herwig B. CALL VRSet 'Main', 'StatusText', infotext */ if infotext = "" then infotext = " " CALL VRSet 'CN_CURRENT', 'Caption', infotext CALL VRSet 'CN_CURRENT', 'HintText',infotext /* Herwig B. */ CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_SEP3', 'Visible', 1 CALL VRSet 'Menu_Context_Open_Default', "Visible", 1 IF p_mounts > 0 THEN DO CALL VRSet 'PB_UNMOUNT', 'Enabled', 1 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 1 if pos("*",p_string) > 0 | pos(";",p_string) > 0 then CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0 else CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 1 END ELSE DO CALL VRSet 'PB_UNMOUNT', 'Enabled', 0 CALL VRSet 'MENU_CONTEXT_UNMOUNT', 'Visible', 0 CALL VRSet 'MENU_CONTEXT_EDIT', 'Visible', 0 END parent = VRMethod('CN_CURRENT', 'GetRecordAttr', rh, 'Parent') IF parent == '' THEN DO CALL VRSet 'PB_DETACH', 'Enabled', 1 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 1 CALL VRSet 'MENU_CONTEXT_SEP3', 'Visible', 1 END ELSE DO CALL VRSet 'PB_DETACH', 'Enabled', 0 CALL VRSet 'MENU_CONTEXT_DETACH', 'Visible', 0 CALL VRSet 'MENU_CONTEXT_OPEN', 'Visible', 0 CALL VRSet 'MENU_CONTEXT_SEP1', 'Visible', 0 CALL VRSet 'MENU_CONTEXT_DETACH_ALL', 'Visible', 0 CALL VRSet 'MENU_CONTEXT_SEP2', 'Visible', 0 CALL VRSet 'MENU_CONTEXT_SEP3', 'Visible', 0 END ok = VRMethod( "Menu_Context", "Popup", , , "", "" ) IF options.!debug == 1 THEN SAY time()' '||"CN_CURRENT_ContextMenu done" return /*:VRX CN_CURRENT_DoubleClick */ CN_CURRENT_DoubleClick: IF options.!debug == 1 THEN SAY time()' '||"CN_CURRENT_DoubleClick started" CALL VRSet "TM_AUTOCLOSE", "ENABLED", 0 rh = VRInfo('Record') /* we have to check whether the record still exists because under certain circumstances the event routine is executed after the record was already removed */ if VRMethod( 'CN_CURRENT', "ValidateRecord", rh) <> 1 then do IF options.!debug == 1 THEN SAY time()' '||"CN_CURRENT_DoubleClick aborted" return end data = VRMethod('CN_CURRENT', 'GetRecordAttr', rh, 'UserData') PARSE VAR data p_node ';' p_mounts ';' p_string IF options.!debug == 1 THEN do SAY ' data = "'data'"' SAY ' p_node = "'p_node'"' SAY ' p_mounts = "'p_mounts'"' SAY ' p_string = "'p_string'"' end call Menu_Context_Open_Default_Click IF options.!debug == 1 THEN SAY time()' '||"CN_CURRENT_DoubleClick done" return /*:VRX CN_CURRENT_DragDrop */ CN_CURRENT_DragDrop: IF options.!debug == 1 THEN SAY time()' CN_CURRENT_DragDrop started' ok = VRSet("TM_RefreshCurrentDisplay","Enabled", 0) IF options.!debug == 1 THEN say " settings.!network = "settings.!network p_workgroup = '' p_server = '' p_share = '' srcFile = VRInfo( "SourceFile" ) srcCtn = VRInfo( "SourceObject" ) srcRec = VRInfo( "SourceRecord" ) trgCtn = VRInfo( "TargetObject" ) trgRec = VRInfo( "TargetRecord" ) IF options.!debug == 1 THEN do say ' srcFile = "'srcFile'"' say ' srcCtn = "'srcCtn'"' if srcCtn <> "" then say ' srcCtn name = "'VRGet(srcCtn,'Name')'"' say ' srcRec = "'srcRec'"' say ' trgCtn = "'trgCtn'"' if trgCtn <> "" then say ' trgCtn name = "'VRGet(trgCtn,'Name')'"' say ' trgRec = "'trgRec'"' end if srcFile <> "" then do /* A file was dropped onto the container - attempt to load it */ IF options.!debug == 1 THEN say ' Possible profile dropped: "'srcFile'"' /* was it really a profile ? */ if translate(VRParseFileName(srcFile,'E')) = translate(fs.!profileext) then do /* Yes - load it! */ options.!autoload = 1 Profile = srcFile call PB_LOAD_Click end else do /* No - barf! */ buttons.0 = 1 buttons.1 = NLVGetMessage(9) ok = VRMessage('Main', NLVGetMessage(103,srcFile ), NLVGetMessage(5), 'E','buttons.') end IF options.!debug == 1 THEN SAY time()' CN_CURRENT_DragDrop done (load profile)' return end ok = VRMethod("CB_MOUNT", "GetStringList", "ShareLevels." ) if VRGet(srcCtn,'Name') = "CN_CONDET" then do p_mpoint = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.MpointFH) p_workgroup = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.WorkgroupFH) p_server = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.ServerFH) p_share = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.ShareFH) p_user = VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.UserFH) p_password = x2c(VRMethod("CN_CONDET", "GetFieldData", srcRec, CD.SpasswordFH)) ShareLevel = 1 if p_share = "" then ShareLevel = 2 if p_server = "" then ShareLevel = 3 if p_workgroup = "" then ShareLevel = 4 ok = VRSet("CB_MOUNT", "Selected", Sharelevel ) ok = VRset("CB_MOUNT", "Value", mtype.sharelevel) ok = VRset("EF_SERVER", "Value", p_server) ok = VRset("EF_SHARE", "Value", p_share) ok = VRset("EF_NETWORK", "Value", p_workgroup) ok = VRset("EF_USER", "Value", p_user) ok = VRset("EF_PASSWORD", "Value", p_password) parse var p_mpoint p_drv '\' p_dir p_dir = strip(p_dir,'T','\') ok = VRset("CB_DRIVES", "Value", p_drv) ok = VRset("EF_DIRECTORY", "Value", p_dir) end else do /* SmbTree */ DragCapt = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Caption") ParentRH = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Parent") if ParentRH = "" then do /* A workgroup was dragged */ say "Workgroup dragged!" parse var DragCapt p_workgroup '0D0A'x . p_workgroup = strip(p_workgroup) ok = VRSet("EF_NETWORK","Value",strip(p_workgroup)) ok = VRSet("EF_SERVER","Value","") ok = VRSet("EF_SHARE","Value","") ShareLevel = 3 end else do ParDragCapt = VRMethod(srcCtn, "GetRecordAttr", ParentRH, "Caption") GParentRH = VRMethod(srcCtn, "GetRecordAttr", ParentRH, "Parent") if GParentRH = "" then do /* A server was dragged */ say "Server dragged!" parse var ParDragCapt p_workgroup '0D0A'x . ok = VRSet("EF_NETWORK","Value",strip(p_workgroup)) p_workgroup = strip(p_workgroup) parse var DragCapt p_server '0D0A'x . p_server = strip(p_server) ok = VRSet("EF_SERVER","Value",strip(p_server)) ok = VRSet("EF_Share","Value","") ShareLevel = 2 end else do /* A share was dragged */ say "Share dragged!" GParDragCapt = VRMethod(srcCtn, "GetRecordAttr", GParentRH, "Caption") parse var GParDragCapt p_workgroup '0D0A'x . p_workgroup = strip(p_workgroup) ok = VRSet("EF_NETWORK","Value",strip(p_workgroup)) parse var ParDragCapt p_server '0D0A'x . p_server = strip(p_server) ok = VRSet("EF_SERVER","Value",strip(p_server)) parse var DragCapt p_share '0D0A'x . p_share = strip(p_share) ok = VRSet("EF_Share","Value",strip(p_share)) ShareLevel = 1 end end end IF options.!debug == 1 THEN do say 'p_workgroup = "'p_workgroup'"' say 'p_server = "'p_server'"' say 'p_share = "'p_share'"' end ok = VRSet( "CB_MOUNT", "Selected", Sharelevel ) settings.!network = VRGet("EF_NETWORK","Value") call CB_MOUNT_Change if trgRec = "" then do ok = VRSet("CB_DRIVES","Value", "") ok = VRSet("EF_DIRECTORY","Value", "") window = VRLoadSecondary( "SW_MOUNTPOINT", "W" ) if VRGet("CB_DRIVES","Value") = "" then return end else do TargetString = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Caption") parTrgRH = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Parent") do while parTrgRH <> "" partrgCapt = VRMethod(trgCtn, "GetRecordAttr", partrgRH, "Caption") TargetString = partrgCapt||'\'||TargetString parTrgRH = VRMethod(trgCtn, "GetRecordAttr", partrgRH , "Parent") end say 'TargetString = "'TargetString'"' ok = VRSet("CB_DRIVES","Value", left(TargetString,2)) ok = VRSet("EF_DIRECTORY","Value", substr(TargetString,4)) window = VRLoadSecondary( "SW_MOUNTPOINT", "W" ) if VRGet("CB_DRIVES","Value") = "" then return end window = VRLoadSecondary( "SW_LOGIN", "W" ) call PB_MOUNT_CLICK if VRGet(srcCtn,'Name') = "CN_CONDET" & VRMethod( 'CN_CONDET', "ValidateRecord", srcRec) = 1 then do if VRMethod("CN_CONDET", "GetRecordAttr", srcRec, "Icon") = '#68:PMWP.DLL' then ok = VRMethod( "CN_CONDET", "RemoveRecord", srcRec) end IF options.!debug == 1 THEN SAY time()' CN_CURRENT_DragDrop done' return /*:VRX CN_SMBTREE_Click */ CN_SMBTREE_Click: IF options.!debug == 1 THEN SAY time()' CN_SMBTREE_Click started' ok = VRset("DT_StatusBar","Caption", VRGet("Main", "HintText")) call _dropdeprecated call _GetSmbObjectProperties VRInfo('Record') ok = VRset("DT_Statusbar", "Caption", SMBObj.udatamsg) IF options.!debug == 1 THEN SAY time()' CN_SMBTREE_Click done' return /*:VRX CN_SMBTREE_ContextMenu */ CN_SMBTREE_ContextMenu: IF options.!debug == 1 THEN SAY time()' CN_SMBTREE_ContextMenu started' call _dropdeprecated call _GetSmbObjectProperties VRInfo('Record') /* Hide all context menu entries */ ok = VRSet("Menu_Selected_Remove", "Visible", 0) /* CN_CONDET */ ok = VRSet("Menu_Selected_Retry", "Visible", 0) /* CN_CONDET */ ok = VRSet("Menu_Selected_Connect", "Visible", 0) /* CN_SMBTREE */ ok = VRSet("Menu_Selected_Sep1", "Visible", 0) /* CN_SMBTREE */ ok = VRSet("Menu_Selected_Info", "Visible", 0) /* CN_SMBTREE */ ok = VRSet("Menu_Selected_Default_Workgroup","Visible", 0) /* CN_SMBTREE */ select when SMBObj.udatatype = "DISK" then do ok = VRSet("Menu_Selected_Connect", "Visible", 1) ok = VRMethod( "Menu_Selected", "Popup", , , "", "" ) end when SMBObj.udatatype = "SERVER" then do ok = VRSet("Menu_Selected_Connect", "Visible", 1) ok = VRSet("Menu_Selected_Sep1", "Visible", 1) ok = VRSet("Menu_Selected_Info", "Visible", 1) ok = VRMethod( "Menu_Selected", "Popup", , , "", "" ) end when SMBObj.udatatype = "WORKGROUP" then do ok = VRSet("Menu_Selected_Connect", "Visible", 1) ok = VRSet("Menu_Selected_Sep1", "Visible", 1) ok = VRSet("Menu_Selected_Default_Workgroup","Visible", 1) ok = VRMethod( "Menu_Selected", "Popup", , , "", "" ) end when SMBObj.udatatype = "PRINTER" then do CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E' end otherwise nop /* FILE DIRECTORY */ end IF options.!debug == 1 THEN SAY time()' CN_SMBTREE_ContextMenu done' return /*:VRX CN_SMBTREE_DoubleClick */ CN_SMBTREE_DoubleClick: IF options.!debug == 1 THEN SAY time()' CN_SMBTREE_DoubleClick started' call _dropdeprecated call _GetSmbObjectProperties VRInfo('Record') /* IF options.!debug == 1 THEN SAY time()' CN_SMBTREE_DoubleClick done' return */ /* Enable last 2 lines for 2.0.x (to disable on the fly browsing) */ IF options.!debug == 1 THEN SAY ' Browsing "'SMBObj.udatatype'"' If SMBObj.udatatype = "DIRECTORY" then do BrowsePath = _browsebuildpath(SMBObj.rh) call _BrowseResetObject(SmbObj.rh) parse var browsepath '\\'machine'\'sharename '\' browsepath browsepath = browsepath'\*' call _BrowseDirectory end If SMBObj.udatatype = "FILE" then do BrowsePath = _browsebuildpath(SMBObj.rh) call _BrowseResetObject(SmbObj.rh) parse var browsepath '\\'machine'\'sharename '\' browsepath OpenOk = _browseobjectopen(machine,sharename,browsepath) if \OpenOK then do say " Not connected - trying to connect" ok = VRMethod( "CN_SMBTREE", "SetRecordAttr", sharerh, "Selected", 1) call PB_CONNECT_Click ok = VRMethod( "CN_SMBTREE", "SetRecordAttr", SMBObj.rh, "Selected", 1) OpenOk = _browseobjectopen(machine,sharename,browsepath) if \OpenOk then do say " Not connected - cannot open - aborting!" end end end if SMBObj.udatatype = "DISK" then do machine = VRMethod("CN_smbtree","GetRecordAttr",SMBObj.parentrh,"Caption") parse var machine machine '0D0A'x . machine = strip(machine) call _BrowseResetObject(SmbObj.rh) sharename = SMBObj.resname BrowsePath = "" call _BrowseDirectory end IF options.!debug == 1 THEN SAY time()' CN_SMBTREE_DoubleClick done' return /*:VRX CN_SMBTREE_DragStart */ CN_SMBTREE_DragStart: IF options.!debug == 1 THEN SAY time()' CN_SMBTREE_DragStart started' obj = VRInfo( "object" ) ok = VRMethod( "CN_SMBTREE", "GetRecordList", "SourceOrSelected", "SelRH." ) if SelRH.0 = 0 then do IF options.!debug == 1 THEN SAY time()' CN_SMBTREE_DragStart aborted' return end call _dropdeprecated call _GetSMBObjectProperties SelRH.1 select when SMBObj.udatatype = "WORKGROUP" | SMBObj.udatatype = "SERVER" | SMBObj.udatatype = "DISK" then do call VRMethod obj, 'StartDrag' end when SMBObj.udatatype = "PRINTER" then do CALL VRMessage 'Main', NLVGetMessage( 62 ), NLVGetMessage( 5 ), 'E' end otherwise nop /* FILE DIRECTORY */ end IF options.!debug == 1 THEN SAY time()' CN_SMBTREE_DragStart done' return /*:VRX CreateObject */ CreateObject: procedure Parse Arg Class, Title, Location, Setup, Collision /* Say 'Creating ['Title']' */ say Setup rc = SysCreateObject( Class, Title, Location, Setup, Collision ) If rc <> 1 Then do Msg.Text = ' > failed to create ['Title' | 'Class'] at location ['Location']' Msg.Type = 'Error' say Msg.Text end return rc /*:VRX DT_STATUSBAR_ContextMenu */ DT_STATUSBAR_ContextMenu: ok = VRSet("DT_STATUSBAR","Caption", VRGet("Main", "HintText")) return /*:VRX EF_PASSWORD1_KeyPress */ EF_PASSWORD1_KeyPress: obj = VRInfo( "Object" ) keystr = VRGet( obj, "KeyString" ) /* say keystr */ select when keystr = "{Enter}" then call PB_LOGIN_OK_Click when keystr = "{Newline}" then call PB_LOGIN_OK_Click when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click otherwise nop end return /*:VRX EF_PASSWORD_Change */ EF_PASSWORD_Change: call _UserCredUpdate return /*:VRX EF_SERVER_Change */ EF_SERVER_Change: Now = VRGet("EF_SERVER","value") if Now = "" then return ok = SysSleep(1) if Now <> VRGet("EF_SERVER","value") then return /* Do nothing for incomplete IP addresses */ if strip(translate(VRGet("EF_SERVER","value"),copies(' ',11),'01234567890.')) = "" & length(VRGet("EF_SERVER","value")) < 7 then return ok = VRMethod( "CN_smbtree", "GetRecordList", "Visible", "rh." ) FoundServer = 0 do I = 1 to rh.0 Userdata = VRMethod("CN_smbtree","GetRecordAttr",rh.I,"Userdata") ResName = VRMethod("CN_smbtree","GetRecordAttr",rh.I,"Caption") ParentRH = VRMethod("CN_smbtree","GetRecordAttr",rh.I,"Parent") parse var ResName ResName '0D0A'x . ResName = strip(ResName) parse var userdata ResType '|' . if VRGet("EF_SERVER","value") = ResName then do /* we found the server the field was changed to */ /* Workgroup properly */ if ParentRH = "" then do ok = VRSet("EF_NETWORK", "Value", "") /* The workgroup might be unknown at this moment */ end else do ok = VRSet("EF_NETWORK", "Value", VRMethod("CN_smbtree","GetRecordAttr",ParentRH,"Caption")) end /* clear shares */ ok = VRMethod("EF_SHARE", "Reset") ok = VRset("EF_SHARE","Value", "") do J = 1 to rh.0 /* populate shares with valid entries */ Userdata = VRMethod("CN_smbtree","GetRecordAttr",rh.J,"Userdata") ResName = VRMethod("CN_smbtree","GetRecordAttr",rh.J,"Caption") ParentRH = VRMethod("CN_smbtree","GetRecordAttr",rh.J,"Parent") parse var ResName ResName '0D0A'x . ResName = strip(ResName) parse var userdata ResType '|' . if ParentRH = rh.I then do /* we found a share belonging to our server */ if ResType = "DISK" then ok = VRMethod("EF_SHARE","AddString", ResName) end end FoundServer = 1 leave end end if Foundserver = 0 then do machine = VRGet("EF_SERVER","value") smbtree.!machine = VRMethod( "CN_smbtree", "AddRecord",,, machine) /* We make any machine as sleeping initially */ ok = VRMethod( "CN_smbtree", "SetRecordAttr", smbtree.!machine, "Icon","#61:PMWP.DLL") ok = VRMethod( "CN_smbtree", "SetRecordAttr", smbtree.!machine, "ReadOnly", 1) ok = VRMethod( "CN_smbtree", "SetFieldData", smbtree.!machine, NBFH, machine) call _UserCredUpdate call _RefreshShares end return /*:VRX EF_USER1_KeyPress */ EF_USER1_KeyPress: obj = VRInfo( "Object" ) keystr = VRGet( obj, "KeyString" ) /* say keystr */ select when keystr = "{Enter}" then ok = VRMethod( "EF_Password1", "SetFocus" ) when keystr = "{Newline}" then ok = VRMethod( "EF_Password1", "SetFocus" ) when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click otherwise nop end return /*:VRX EF_USER_Change */ EF_USER_Change: call _UserCredUpdate return /*:VRX Fini */ Fini: window = VRWindow() call VRSet window, "Visible", 0 drop window return 0 /*:VRX GetChildren */ GetChildren: PROCEDURE EXPOSE existrec. exc options. fs. cd. samba. IF options.!debug == 1 THEN SAY time()' GetChildren started' PARSE ARG node, parec dyn = "CALL "fs.!prefix"RxGetMount node, 'info.', 'points.', 'res.'" IF options.!debug == 1 THEN SAY ' Dyn code: 'dyn interpret dyn; drop dyn IF info.2 > 0 THEN icon = '#64:PMWP.DLL' ELSE icon = '#68:PMWP.DLL' rh = VRMethod('CN_CURRENT', 'AddRecord', parec, 'Last', info.0, icon ) IF rh == '' | datatype(res.0) <> "NUM" THEN RETURN exc = exc + 1 existrec.exc = rh userdata = node';'info.2 DO i = 1 TO res.0 userdata = ParseResourceData( userdata, res.i ) END if userdata = "UNKNOWN" then ok = VRMethod('CN_CURRENT', 'RemoveRecord', rh) else do CALL VRMethod 'CN_CURRENT', 'SetRecordAttr', rh, 'UserData', userdata if options.currentdata = userdata then ok = VRMethod('CN_CURRENT', 'SetRecordAttr', rh, 'Selected', 1) end DO i = 1 TO points.0 childnode = node || points.i || '\' CALL GetChildren childnode, rh END IF options.!debug == 1 THEN SAY time()' GetChildren done' RETURN /*:VRX GetMountPoints */ GetMountPoints: PROCEDURE EXPOSE existrec. options. fs. cd. samba. IF options.!debug == 1 THEN SAY time()' GetMountPoints started' /* CALL VRSet 'CN_CURRENT', 'Painting', 0 */ /* IF options.!debug == 1 THEN SAY time()' '||"GetMountPoints: SysDriveMap(USED) started" */ drvs = SysDriveMap('C:', 'USED') /* was "REMOTE" */ /* IF options.!debug == 1 THEN SAY time()' '||"GetMountPoints: SysDriveMap(USED) done" */ ac = 0 DO i = 1 TO WORDS( drvs ) fs = TRANSLATE( SysFileSystemType( WORD( drvs, i ))) IF fs == fs.!fileSystemtype THEN DO ac = ac + 1 attached.ac = WORD( drvs, i ) END END attached.0 = ac exc = 0 DO i = 1 TO attached.0 node = attached.i'\' CALL VRMethod 'CB_DRIVES', 'AddString', attached.i dyn = "CALL "fs.!prefix"RxGetMount node, 'info.', 'points.', 'res.'" IF options.!debug == 1 THEN SAY ' Dyn code: 'dyn interpret dyn; drop dyn IF info.2 > 0 THEN icon = '#16:PMWP.DLL' ELSE icon = '#70:PMWP.DLL' rh = VRMethod('CN_CURRENT', 'AddRecord',, 'Last', attached.i, icon ) IF rh == '' THEN ITERATE exc = exc + 1 existrec.exc = rh userdata = node';'info.2 DO j = 1 TO res.0 userdata = ParseResourceData( userdata, res.j ) END /* IF options.!debug == 1 THEN say ' "'attached.i'" "'userdata'"' */ CALL VRMethod 'CN_CURRENT', 'SetRecordAttr', rh, 'UserData', userdata if options.currentdata = userdata then ok = VRMethod('CN_CURRENT', 'SetRecordAttr', rh, 'Selected', 1) CALL VRMethod 'CN_CURRENT', 'SetRecordAttr', rh, 'Expanded', 1 DO j = 1 TO points.0 childnode = node || points.j || '\' CALL GetChildren childnode, rh END END existrec.0 = exc /* CALL VRSet 'CN_CURRENT', 'Painting', 1 */ IF options.!debug == 1 THEN SAY time()' '||"GetMountPoints done" RETURN /*:VRX Halt */ Halt: signal _VREHalt return /*:VRX Init */ Init: /* Herwig */ /* CALL VRSet 'Console', 'WindowListTitle', '' */ window = VRWindow() call VRSet window, "Visible", 0 call VRMethod window, "Activate" drop window RETURN /*:VRX LoadFileSysFuncs */ LoadFileSysFuncs: IF options.!debug == 1 THEN SAY time()' LoadFileSysFuncs() started' Fatal = 1 RestartCount = 0 FoundEVFS = 1 FoundND = 1 if SysSearchPath("PATH", "EVFSCTL.EXE") = "" then do FoundEVFS = 0 ForceNDFS = 1 end CtlRestart: if \ForceNDFS then signal NoNetDrive ForceNDFS: IF options.!debug == 1 THEN SAY ' NDFS check entered' call RxFuncAdd 'NdRxLoadFuncs', 'NDCALLS', 'NdRxLoadFuncs' SIGNAL ON SYNTAX NAME NoNetdrive call NdRxLoadFuncs FoundND = 1 SIGNAL OFF SYNTAX fs.!prefix = 'ND' fs.!fileSystemtype = "NDFS32" fs.!profileext = "ndc" signal CommonToBothFS NoNetdrive: IF options.!debug == 1 THEN SAY ' NDFS not found' CALL RxFuncAdd 'EvfsRxLoadFuncs', 'EVFSCALL.DLL', 'EvfsRxLoadFuncs' SIGNAL ON SYNTAX NAME NoEVFSCALL CALL EvfsRxLoadFuncs FoundEVFS = 1 SIGNAL OFF SYNTAX fs.!prefix = 'EVFS' fs.!fileSystemtype = "EVFS" fs.!profileext = "evp" CommonToBothFS: IF options.!debug == 1 THEN SAY ' Common version check' dyn = "fsstat = "fs.!prefix"RxQueryIFS()" IF options.!debug == 1 THEN SAY ' Dyn code: '||dyn interpret dyn; drop dyn IF options.!debug == 1 THEN SAY ' Dyn res fsstat = '||fsstat if fsstat = 252 then do dyn = "Found"fs.!prefix" = 0" interpret dyn end if word(fsstat,1) = '0' then do PARSE VAR fsstat '0 'fsname fsver fsctl . fs.!name = fsname fs.!version = fsver IF options.!debug == 1 THEN DO say ' fs.!prefix = 'fs.!prefix say ' fs.!name = 'fs.!Name say ' Version = 'fsver say ' fsctl = 'fsctl end end else do if FoundND = 0 & FoundEVFS = 0 then do CALL VRMessage 'Main', 'FATAL: Neither EVFS nor Netdrive found: 'fs.!prefix'RxQueryIFS()='fsstat, NLVGetMessage( 5 ), 'E' signal Halt end signal ForceNDFS end IF fsctl \= 1 THEN DO if ReStartCount = 0 then do 'detach 'fs.!prefix'ctl.exe' RestartCount = 1 ok = SysSleep(1) signal CtlRestart end else do CALL VRMessage 'Main', NLVGetMessage( 101 ), NLVGetMessage( 5 ), 'E' signal Halt end END Fatal = 0 IF options.!debug == 1 THEN SAY time()' LoadFileSysFuncs() done' return /*:VRX LoadSettings */ LoadSettings: PROCEDURE EXPOSE settings. options. fs. advanced. samba. ShowHidden margin IF options.!debug == 1 THEN SAY time()' LoadSettings started' /* Locate the profile. */ os2_ini = VALUE('USER_INI',,'OS2ENVIRONMENT') inipath = VRParseFilePath( os2_ini, 'DP') IF inipath == '' THEN inipath = SysBootDrive() || '\OS2' settings.!ini = inipath'\evfsgui.ini' IF options.!debug == 1 THEN SAY ' EVFSGUI INIfile = "'settings.!ini'"' IF STREAM( settings.!ini, 'C', 'QUERY EXISTS') == '' THEN DO IF options.!debug == 1 THEN say " First start!" settings.!network = "" settings.!buttonson = 1 settings.!smbtreeon = 1 advanced.!browseimme = 1 advanced.!savepassive = 0 advanced.!broadcast = 0 advanced.!bigicons = 1 ShowHidden = 0 CALL VRSet VRWindow(), 'Height', 7576 CALL VRSet VRWindow(), 'Width', 8200 CALL VRSet "SPLIT_MAIN", 'Left', 2915 CALL VRMethod VRWindow(), 'CenterWindow' call Menu_View_Buttons_Click call Menu_View_SmbTree_Click ok = VRset("GB_SMBTREE","Painting", 1) ok = VRset("GB_SMBTREE","Visible", 1) call VRSet 'Main', 'Visible', 1 call Main_Resize END ELSE DO /* Load window position settings. */ settings.!x = VRGetIni('Settings', 'X', settings.!ini, 'NoClose') settings.!y = VRGetIni('Settings', 'Y', settings.!ini, 'NoClose') IF settings.!x == '' THEN settings.!x = -1 IF settings.!y == '' THEN settings.!y = -1 settings.!h = VRGetIni('Settings', 'H', settings.!ini, 'NoClose') settings.!w = VRGetIni('Settings', 'W', settings.!ini, 'NoClose') IF settings.!h == '' THEN settings.!h = -1 IF settings.!w == '' THEN settings.!w = -1 settings.!s = VRGetIni('Settings', 'S', settings.!ini, 'NoClose') IF settings.!s == '' THEN settings.!s = -1 /* Herwig B. */ settings.!curbcolor = VRGetIni('Settings', 'TitleBarBackground', settings.!ini, 'NoClose') settings.!curfcolor = VRGetIni('Settings', 'TitleBarForeground', settings.!ini, 'NoClose') IF (settings.!curbcolor = '' | settings.!curbcolor = '') THEN settings.!curbcolor = 'SystemActiveTitle' IF (settings.!curfcolor = '' | settings.!curfcolor = '') THEN settings.!curfcolor = 'SystemActiveTitleText' settings.!buttonson = VRGetIni('Settings', 'ButtonsOn', settings.!ini, 'NoClose') IF settings.!buttonson = "" then settings.!buttonson = 1 settings.!smbtreeon = VRGetIni('Settings', 'SmbtreeOn', settings.!ini, 'NoClose') IF settings.!smbtreeon = "" then settings.!smbtreeon = 0 settings.!dialogon = VRGetIni('Settings', 'DialogOn', settings.!ini, 'NoClose') IF settings.!dialogon = "" then settings.!dialogon = 1 settings.!condeton = VRGetIni('Settings', 'ConDetOn', settings.!ini, 'NoClose') IF settings.!condeton = "" then settings.!condeton = 1 /* Load network - does not make sense anymore settings.!network = VRGetIni('Settings', 'Network', settings.!ini, 'NoClose') IF settings.!network == '' THEN settings.!network = '' */ settings.!network = '' if \VRFileExists( samba.!smbconf ) then call _CreateSmbConf /* Load font settings. */ IF VRFileExists( SysBootDrive() || '\OS2DBCS') == 1 THEN default_font = '9.WarpSans Combined' ELSE default_font = '9.WarpSans' settings.!cfont = VRGetIni('Settings', 'ContainerFont', settings.!ini, 'NoClose') settings.!wfont = VRGetIni('Settings', 'WindowFont', settings.!ini, 'NoClose' ) IF settings.!cfont == '' THEN settings.!cfont = default_font IF settings.!wfont == '' THEN settings.!wfont = default_font advanced.!browseauth = VRGetIni('Settings', 'BrowseAuth', settings.!ini, 'NoClose') IF advanced.!browseauth == '' THEN advanced.!browseauth = 0 advanced.!browseimme = VRGetIni('Settings', 'BrowseImme', settings.!ini) IF advanced.!browseimme == '' THEN advanced.!browseimme = 1 advanced.!debug = VRGetIni('Settings', 'Debug', settings.!ini) IF advanced.!debug == '' THEN advanced.!debug = 0 /* Turn off debug by default for release builds */ /* This is a hack and should be reworked! - using several variables for debug is bad! */ options.!debug = advanced.!debug IF options.!debug <> 1 THEN ok = VRRedirectStdIO("OFF") advanced.!alwaysmp = VRGetIni('Settings', 'AlwaysMP', settings.!ini) IF advanced.!alwaysmp == '' THEN advanced.!alwaysmp = 1 advanced.!special = VRGetIni('Settings', 'SpecialShares', settings.!ini) IF advanced.!special == '' THEN advanced.!special = 0 advanced.!bigicons = VRGetIni('Settings', 'BigIcons', settings.!ini) IF advanced.!bigicons == '' THEN advanced.!bigicons = 1 advanced.!savepassive = VRGetIni('Settings', 'SavePassive', settings.!ini) IF advanced.!savepassive == '' THEN advanced.!savepassive = 0 advanced.!broadcast = VRGetIni('Settings', 'Broadcast', settings.!ini) IF advanced.!broadcast == '' THEN advanced.!broadcast = 0 /* Apply the settings */ /* Does not make sense anymore ok = VRSet("EF_NETWORK","Value", settings.!network) */ ok = VRSet("DT_CURRENT","BACKCOLOR", settings.!curbcolor ) ok = VRSet("DT_CURRENT","FORECOLOR", settings.!curfcolor ) ok = VRSet("DT_DIALOG","BACKCOLOR", settings.!curbcolor ) ok = VRSet("DT_DIALOG","FORECOLOR", settings.!curfcolor ) ok = VRSet("DT_SMBTREE","BACKCOLOR", settings.!curbcolor ) ok = VRSet("DT_SMBTREE","FORECOLOR", settings.!curfcolor ) ok = VRSet("DT_CONDET","BACKCOLOR", settings.!curbcolor ) ok = VRSet("DT_CONDET","FORECOLOR", settings.!curfcolor ) ok = VRset("CN_CURRENT", "MiniIcons", \advanced.!bigicons) ok = VRset("CN_SMBTREE", "MiniIcons", \advanced.!bigicons) ok = VRset("CN_CONDET", "MiniIcons", \advanced.!bigicons) ok = VRset("Menu_View_MiniIcons", "Checked", \advanced.!bigicons) ok = VRSet("Menu_View_Buttons","Checked", settings.!buttonson) ok = VRset("GB_Buttons","Visible", settings.!buttonson) options.!buttondelta = 440 * settings.!buttonson ok = VRSet("Menu_View_Dialog","Checked", settings.!dialogon) if settings.!dialogon then call Menu_View_Dialog_Click ok = VRSet("Menu_View_ConDet","Checked", settings.!condeton) if settings.!condeton then do call Menu_View_ConDet_Click ok = VRset("GB_CONDET","Painting", 1) ok = VRset("GB_CONDET","Visible", 1) end ok = VRSet("Menu_View_Smbtree","Checked", settings.!smbtreeon) if settings.!smbtreeon then do call Menu_View_SmbTree_Click ok = VRset("GB_SMBTREE","Painting", 1) ok = VRset("GB_SMBTREE","Visible", 1) end if advanced.!debug == 1 then ok = VRRedirectStdio("ON") IF ( settings.!x >= 0 ) & ( settings.!y >= 0 ) & ( settings.!l >= 0 ) & ( settings.!w >= 0 ) & ( settings.!s >= 0 ) THEN DO CALL VRSet VRWindow(), 'Left', settings.!x CALL VRSet VRWindow(), 'Top', settings.!y CALL VRSet VRWindow(), 'Height', settings.!h CALL VRSet VRWindow(), 'Width', settings.!w CALL VRSet "SPLIT_MAIN", 'Left', settings.!s END ELSE CALL VRMethod VRWindow(), 'CenterWindow' CALL VRSet 'CN_CURRENT', 'Font', settings.!cfont CALL VRSet 'Main', 'Font', settings.!wfont CALL VRSet 'Main', 'StatusFont', settings.!wfont END if options.!nogui == 1 then CALL VRLoadSecondary "SW_PROGRESS","W" /* This is too early if a profile was loaded and Main_Resize does it anyway */ /* else call VRSet 'Main', 'Visible', 1 */ /* in non debug versions this is normally not visible */ IF options.!debug == 1 THEN SAY ' NLV MessageFile = "'settings.!messages'"' IF options.!debug == 1 THEN SAY ' NLV HelpFile = "'settings.!helpfile'"' IF options.!debug == 1 THEN SAY time()' LoadSettings done' RETURN /*:VRX Main_Close */ Main_Close: CALL Quit RETURN /*:VRX Main_Create */ Main_Create: ok = VRRedirectStdIO("OFF") options.!debug = 0 IF options.!debug == 1 THEN ok = VRREdirectStdIO("ON") IF options.!debug == 1 THEN SAY time()' Main_Create started' CALL RxFuncAdd 'SysLoadFuncs', 'REXXUTIL', 'SysLoadFuncs' CALL SysLoadFuncs call RxFuncAdd 'PRLoadFuncs', 'PR1UTIL', 'PRLoadFuncs' call PRLoadFuncs CALL _InitTempDir CALL NLVSetup CALL StemsInit CALL _ContainersInit CALL _GUIInit CALL ParseCommandLine CALL LoadFileSysFuncs CALL _CltInit CALL LoadSettings CALL Refresh if advanced.!savepassive == 1 then CALL _PassiveLoad IF options.!autoload == 1 THEN CALL PB_LOAD_Click CALL VRSet "CB_MOUNT", "Selected", 1 CALL VRSet "CB_DRIVES", "Selected", 1 IF options.!autoclose == 1 THEN CALL TM_AutoClose_Trigger /* For whatever reason the timer is not triggered anymore.... CALL VRSet "TM_AUTOCLOSE", "ENABLED", 1 */ ELSE do if advanced.!browseauth == 1 then do window = VRLoadSecondary( "SW_LOGIN", "W" ) call Main_Resize end if advanced.!browseimme == 1 then call PB_REFRESH_Click end IF options.!debug == 1 THEN SAY time()' Main_Create done' return /*:VRX Main_KeyPress */ Main_KeyPress: key = VRGet('Main', 'KeyString') IF key == '{F5}' THEN CALL Refresh RETURN /*:VRX Main_Resize */ Main_Resize: if datatype(options.!buttondelta) = 'CHAR' then return IF options.!debug == 1 THEN SAY time()' Main_Resize started' ok = VRset("Main","Painting", 0) /* Basic measurements */ main_iwidth = VRGet("Main","InteriorWidth") /* Width of window client-area */ main_iheight = VRGet("Main","InteriorHeight") /* Height of window client-area */ sbar_height = VRGet("GB_STATUSBAR","Height") /* Height of status-bar */ split_left = VRGet("SPLIT_Main","Left") /* Position of the left edge of the split-bar */ marginx2 = margin * 2 /* Common margin around controls */ pbtn_height = 400 /* Height of the panels' internal button areas */ buttons_top = main_iheight - sbar_height - margin - options.!buttondelta /* Top of the common button area */ pane_height = buttons_top - (margin * 3) /* Height of a split-bar panel */ lpane_width = split_left - margin /* Width of the left split-bar panel */ rpane_width = main_iwidth - split_left - 60 - margin /* Width of the right split-bar panel */ /* Button bar */ ok = VRSet("GB_BUTTONS", "Top", buttons_top ) ok = VRSet("GB_BUTTONS", "Left", main_iwidth - VRGet("GB_Buttons","Width") - margin ) /* Current Panel */ ok = VRSet("GB_CURRENT", "Visible", 1 ) ok = VRSet("GB_CURRENT", "Top", marginx2 ) ok = VRSet("GB_CURRENT", "Left", margin ) ok = VRSet("GB_CURRENT", "Width", lpane_width ) ok = VRSet("GB_CURRENT", "Height", pane_height ) ok = VRset("GB_CURRENT3", "Top", margin ) ok = VRset("GB_CURRENT3", "Left", margin ) ok = VRset("GB_CURRENT3", "Height", 245 ) ok = VRset("GB_CURRENT3", "Width", lpane_width - marginx2) ok = VRset("DT_CURRENT", "Top", 8 ) ok = VRset("DT_CURRENT", "Left", 8 ) ok = VRset("DT_CURRENT", "Height", 213 ) ok = VRset("DT_CURRENT", "Width", (lpane_width - marginx2) - 24 ) ok = VRset("GB_CURRENT2", "Left", margin ) ok = VRset("GB_CURRENT2", "Top", 245 + marginx2 ) ok = VRset("GB_CURRENT2", "Width", lpane_width - marginx2) ok = VRset("GB_CURRENT2", "Height", pane_height - (margin * 5) - pbtn_height - 245 ) ok = VRset("CN_CURRENT", "Top", margin ) ok = VRset("CN_CURRENT", "Left", margin ) ok = VRset("CN_CURRENT", "Width", VRGet("GB_CURRENT2","Width") - marginx2) ok = VRset("CN_CURRENT", "Height", VRGet("GB_CURRENT2","Height") - marginx2) ok = VRset("PB_DETACH", "Left", margin ) ok = VRset("PB_DETACH", "Top", pane_height - pbtn_height - marginx2 ) ok = VRset("PB_DETACH", "Width", min((lpane_width-margin*3) % 2, 1313) ) ok = VRset("PB_UNMOUNT", "Left", VRGet("PB_DETACH","Width") + marginx2) ok = VRset("PB_UNMOUNT", "Top", pane_height - pbtn_height - marginx2 ) ok = VRset("PB_UNMOUNT", "Width", min((lpane_width-margin*3) % 2, 1313) ) /* SMBTree stuff */ ok = VRSet("GB_SMBTREE", "Top", marginx2 ) ok = VRSet("GB_SMBTREE", "Left", split_left + 60 ) ok = VRset("GB_SMBTREE", "Height", pane_height ) ok = VRset("GB_SMBTREE", "Width", rpane_width ) ok = VRset("GB_SMBTREE3","Top", margin ) ok = VRset("GB_SMBTREE3","Left", margin ) ok = VRset("GB_SMBTREE3","Height", 245 ) ok = VRset("GB_SMBTREE3","Width", rpane_width - marginx2) ok = VRset("DT_SMBTREE", "Top", 8 ) ok = VRset("DT_SMBTREE", "Left", 8 ) ok = VRset("DT_SMBTREE", "Width", (rpane_width - marginx2) - 24 ) ok = VRset("GB_SMBTREE2","Left", margin ) ok = VRset("GB_SMBTREE2","Top", 245 + marginx2 ) ok = VRset("GB_SMBTREE2","Width", rpane_width - marginx2) ok = VRset("GB_SMBTREE2","Height", pane_height - (margin * 5) - pbtn_height - 245 ) ok = VRset("CN_SMBTREE", "Top", margin ) ok = VRset("CN_SMBTREE", "Left", margin ) ok = VRset("CN_SMBTREE", "Width", VRGet("GB_SMBTREE2","Width") - marginx2) ok = VRset("CN_SMBTREE", "Height", VRGet("GB_SMBTREE2","Height") - marginx2) ok = VRset("PB_CONNECT", "Left", margin) ok = VRset("PB_CONNECT", "Top", pane_height - pbtn_height - marginx2) ok = VRset("PB_REFRESH", "Left", VRGet("PB_CONNECT","Width") + marginx2) ok = VRset("PB_REFRESH", "Top", pane_height - pbtn_height - marginx2) ok = VRset("PICT_THROBBER", "Top", VRGet("CN_SMBTREE","Height") % 2 + 100 ) ok = VRset("PICT_THROBBER", "Left", VRGet("CN_SMBTREE","Width") % 2 - 200 ) /* Connection details stuff */ ok = VRSet("GB_CONDET", "Top", marginx2 ) ok = VRSet("GB_CONDET", "Left", split_left + 60 ) ok = VRset("GB_CONDET", "Height", pane_height ) ok = VRset("GB_CONDET", "Width", rpane_width ) ok = VRset("GB_CONDET3","Top", margin ) ok = VRset("GB_CONDET3","Left", margin ) ok = VRset("GB_CONDET3","Height", 245 ) ok = VRset("GB_CONDET3","Width", rpane_width - marginx2) ok = VRset("DT_CONDET", "Top", 8 ) ok = VRset("DT_CONDET", "Left", 8 ) ok = VRset("DT_CONDET", "Width", (rpane_width - marginx2) - 24 ) ok = VRset("GB_CONDET2", "Left", margin ) ok = VRset("GB_CONDET2", "Top", 245 + marginx2) ok = VRset("GB_CONDET2", "Width", rpane_width - marginx2) ok = VRset("GB_CONDET2", "Height", pane_height - (margin * 5) - pbtn_height - 245 ) ok = VRset("CN_CONDET", "Top", margin ) ok = VRset("CN_CONDET", "Left", margin ) ok = VRset("CN_CONDET", "Width", VRGet("GB_CONDET2","Width") - marginx2) ok = VRset("CN_CONDET", "Height", VRGet("GB_CONDET2","Height") - marginx2) ok = VRset("PB_CONDET_SAVE", "Left", margin ) ok = VRset("PB_CONDET_SAVE", "Top", pane_height - pbtn_height - marginx2 ) ok = VRset("PB_CONDET_LOAD", "Left", VRGet("PB_CONDET_SAVE","Width") + marginx2) ok = VRset("PB_CONDET_LOAD", "Top", pane_height - pbtn_height - marginx2 ) /* Dialog stuff */ ok = VRSet("GB_DIALOG", "Top", marginx2 ) ok = VRSet("GB_DIALOG", "Left", split_left + 60 ) ok = VRset("GB_DIALOG", "Height", pane_height ) ok = VRset("GB_DIALOG", "Width", rpane_width ) ok = VRset("GB_DIALOG3", "Top", margin ) ok = VRset("GB_DIALOG3", "Left", margin ) ok = VRset("GB_DIALOG3", "Height", 245 ) ok = VRset("GB_DIALOG3", "Width", rpane_width - marginx2) ok = VRset("DT_DIALOG", "Top", 8 ) ok = VRset("DT_DIALOG", "Left", 8 ) ok = VRset("DT_DIALOG", "Width", (rpane_width - marginx2) - 24 ) ok = VRset("PB_MOUNT", "Left", margin ) ok = VRset("PB_MOUNT", "Top", pane_height - pbtn_height - marginx2) ok = VRset("PB_EDITCANCEL", "Left", VRGet("PB_MOUNT","Width") + marginx2) ok = VRset("PB_EDITCANCEL", "Top", pane_height - pbtn_height - marginx2) ok = VRset("GB_SHARE", "Left", margin ) ok = VRset("GB_SHARE", "Top", 245 + marginx2) ok = VRset("GB_SHARE", "Width", rpane_width - marginx2) ok = VRset("GB_AUTH", "Left", margin ) ok = VRset("GB_AUTH", "Top", 245 + (margin * 3) + VRGet("GB_SHARE","Height")) ok = VRset("GB_AUTH", "Width", rpane_width - marginx2) ok = VRset("GB_MPOINT","Left", margin ) ok = VRset("GB_MPOINT","Top", 245 + (margin * 4) + VRGet("GB_SHARE","Height") + VRGet("GB_AUTH","Height")) ok = VRset("GB_MPOINT","Width", rpane_width - marginx2) ok = VRset("SPLIT_Main", "Visible", 1 ) ok = VRset("SPLIT_Main", "Top", marginx2 ) ok = VRset("SPLIT_Main", "Height", pane_height ) ok = VRSet("GB_STATUSBAR", "Left", margin ) ok = VRSet("GB_STATUSBAR", "Top", main_iheight - sbar_height - margin ) ok = VRSet("GB_STATUSBAR", "Width", lpane_width + 50 + rpane_width ) ok = VRset("DT_STATUSBAR", "Top", 12 ) ok = VRset("DT_STATUSBAR", "Left", 12 ) ok = VRset("DT_STATUSBAR", "Width", (lpane_width + 50 + rpane_width) - 24 ) ok = VRset("Main","Painting", 1) /* check and empty event queue, trash spurious resize events */ EventString = '' TrashedResize = 0 do until EventString = 'nop' EventString = VREvent('N') if EventString <> 'nop' then do if EventString = 'CALL Main_Resize' then TrashedResize = 1 else interpret eventString end end if TrashedResize then CALL Main_Resize IF options.!debug == 1 THEN SAY time()' Main_Resize done' return /*:VRX Menu_Context_ChangeView_Click */ Menu_Context_ChangeView_Click: ok = VRSet("Cn_Current","View","NameTree") return /*:VRX Menu_Context_Detach_All_Click */ Menu_Context_Detach_All_Click: ok = VRMethod( "CN_CURRENT", "GetRecordList", "All", "umrh." ) do um = 1 to umrh.0 ok = VRMethod( "CN_CURRENT", "SetRecordAttr", umrh.um, "Selected", 1) call PB_DETACH_Click end drop um umrh. return /*:VRX Menu_Context_Detach_Click */ Menu_Context_Detach_Click: call PB_DETACH_Click return /*:VRX Menu_Context_Edit_Click */ Menu_Context_Edit_Click: IF options.!debug == 1 THEN SAY time()' Menu_Context_Edit_Click started' options.!editmode = 1 if \VRGet("Menu_View_Dialog","Checked") then call Menu_View_Dialog_Click CALL VRSet "PB_EDITCANCEL","Visible", 1 CALL VRSet "PB_UNMOUNT","Enabled", 0 CALL VRSet "PB_SAVE","Enabled", 0 CALL VRSet "PB_LOAD","Enabled", 0 CALL NLVSetText "DT_DIALOG","Caption",33 CALL VRSet "GB_CURRENT", "ENABLED", 0 ok = VRSet("CB_MOUNT","Value","") ok = VRSet("CB_MOUNT","Selected",1) ok = VRSet("CB_MOUNT","Value",mtype.1) parse var p_string p_domain':\\'p_server'\'p_share /* IF options.!debug == 1 THEN SAY time()' '||p_domain */ IF options.!debug == 1 THEN SAY time()' data '||data IF options.!debug == 1 THEN SAY time()' domain '||p_domain IF options.!debug == 1 THEN SAY time()' server '||p_server IF options.!debug == 1 THEN SAY time()' share '||p_share IF options.!debug == 1 THEN SAY time()' string '||p_string CALL VRSet "EF_SHARE", "VALUE", p_share CALL VRSet "EF_SERVER", "VALUE", p_server CALL VRSet "EF_NETWORK","VALUE", p_domain /* IF options.!debug == 1 THEN SAY time()' '||p_node */ parse var p_node p_drive'\'p_directory'\' CALL VRSet "CB_DRIVES", "Value", p_drive CALL VRSet "EF_DIRECTORY", "Value", p_directory IF options.!debug == 1 THEN SAY time()' Menu_Context_Edit_Click done' return /*:VRX Menu_Context_Open_Click */ Menu_Context_Open_Click: ok = VRSet("Menu_Context_Open_Default","Visible",0) return /*:VRX Menu_Context_Open_Default_Click */ Menu_Context_Open_Default_Click: IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_Click started" userdata = VRMethod( 'CN_CURRENT', 'GetRecordAttr', rh, 'UserData') PARSE VAR userdata mountpoint ';' mounts ';' . if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\') ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "DEFAULT" ) IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_Click done" return /*:VRX Menu_Context_Open_Detail_Click */ Menu_Context_Open_Detail_Click: IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_Details_Click started" userdata = VRMethod( 'CN_CURRENT', 'GetRecordAttr', rh, 'UserData') PARSE VAR userdata mountpoint ';' mounts ';' . if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\') ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "DETAILS" ) IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_Details_Click done" return /*:VRX Menu_Context_Open_Icon_Click */ Menu_Context_Open_Icon_Click: IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_Icon_Click started" userdata = VRMethod( 'CN_CURRENT', 'GetRecordAttr', rh, 'UserData') PARSE VAR userdata mountpoint ';' mounts ';' . if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\') ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "ICON" ) IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_Icon_Click done" return /*:VRX Menu_Context_Open_Settings_Click */ Menu_Context_Open_Settings_Click: IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_DetailsClick started" userdata = VRMethod( 'CN_CURRENT', 'GetRecordAttr', rh, 'UserData') PARSE VAR userdata mountpoint ';' mounts ';' . if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\') ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "SETTINGS" ) IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_Details_Click done" return /*:VRX Menu_Context_Open_Splitview_Click */ Menu_Context_Open_Splitview_Click: IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_Splitview_Click started" userdata = VRMethod( 'CN_CURRENT', 'GetRecordAttr', rh, 'UserData') PARSE VAR userdata mountpoint ';' mounts ';' . if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\') ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "SPLITVIEW" ) IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_Splitview_Click done" return /*:VRX Menu_Context_Open_Tree_Click */ Menu_Context_Open_Tree_Click: IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_Tree_Click started" userdata = VRMethod( 'CN_CURRENT', 'GetRecordAttr', rh, 'UserData') PARSE VAR userdata mountpoint ';' mounts ';' . if length(mountpoint) > 3 then mountpoint = strip(mountpoint,'T','\') ID = VRMethod( "Application", "StartThread", "wps_open", mountpoint, "TREE" ) IF options.!debug == 1 THEN SAY time()' '||"Menu_Context_Open_Tree_Click done" return /*:VRX Menu_Context_Refresh_Click */ Menu_Context_Refresh_Click: CALL Refresh return /*:VRX Menu_Context_Unmount_Click */ Menu_Context_Unmount_Click: call PB_UNMOUNT_Click return /*:VRX Menu_File_Advanced_Click */ Menu_File_Advanced_Click: call PB_ADVANCED_Click return /*:VRX Menu_File_Autostart_Activate_Click */ Menu_File_Autostart_Activate_Click: call PB_AUTOSTART_Click return /*:VRX Menu_File_Autostart_Click */ Menu_File_Autostart_Click: return /*:VRX Menu_File_Autostart_Deactivate_Click */ Menu_File_Autostart_Deactivate_Click: ok = SysDestroyObject("") IF ok == 1 THEN do Text = NLVGetMessage( 79 ) if Text = "" then Text = '[Autostart object created successfully]' CALL VRMessage 'Main', Text, VRGet("Main", "Caption") end ELSE do Text = NLVGetMessage( 78 ) if Text = "" then Text = '[Could find Autostart object]' Title = NLVGetMessage( 5 ) if Title = "" then Title = '[Error]' CALL VRMessage 'Main', Text, Title, 'E' end return /*:VRX Menu_File_Close_Click */ Menu_File_Close_Click: call PB_CLOSE_Click return /*:VRX Menu_File_Load_Click */ Menu_File_Load_Click: call PB_LOAD_Click return /*:VRX Menu_File_Save_Click */ Menu_File_Save_Click: call PB_CONDET_SAVE_Click return /*:VRX Menu_File_Settings_Click */ Menu_File_Settings_Click: adv_changed = 0 CALL VRLoadSecondary "SW_SETTINGS", "W" IF adv_changed == 1 THEN DO advanced.!logfile = adv_logfile advanced.!loglevel = adv_loglevel advanced.!browseauth= adv_browseauth advanced.!browseimme= adv_browseimme advanced.!debug = adv_debug advanced.!special = adv_special advanced.!savepassive=adv_savepassive advanced.!broadcast =adv_broadcast END return /*:VRX Menu_Help_About_Click */ Menu_Help_About_Click: CALL VRMessage 'Main', VRGet("Main", "HintText")||'0D0A'x||'(c) 2007-2010 Alex Taylor and Herwig Bauernfeind',NLVGetMessage( 1 ), 'I' return /*:VRX Menu_Help_Extended_Click */ Menu_Help_Extended_Click: call PB_HELP_Click return /*:VRX Menu_Selected_Connect_Click */ Menu_Selected_Connect_Click: call PB_CONNECT_Click return /*:VRX Menu_Selected_Default_Workgroup_Click */ Menu_Selected_Default_Workgroup_Click: workgroupname = VRMethod("CN_smbtree","GetRecordAttr",SMBObj.rh,"Caption") ok = TRSetIni("[global]","workgroup", workgroupname, samba.!smbconf) return /*:VRX Menu_Selected_Info_Click */ Menu_Selected_Info_Click: IF options.!debug == 1 THEN SAY time()' Menu_Selected_Info_Click started' ok = VRMethod( "CN_smbtree", "GetRecordList", "SourceOrSelected", "SelRH." ) if SelRH.0 = 0 then do IF options.!debug == 1 THEN SAY time()' Menu_Selected_Info_Click aborted' return end call _GetSMBObjectProperties SelRH.1 IF options.!debug == 1 THEN say ' 'samba.!smbclientexe' -L "'SMBObj.resname'" -N 'debuglevel' 2>'samba.!msg' 1>NUL' address cmd samba.!smbclientexe' -L "'SMBObj.resname'" -N 'debuglevel' 2>'samba.!msg' 1>NUL' infoline = linein(samba.!msg) if word(infoline,1) = "creating" then do /* upcase tables are missing */ say "Missing upcase tables detected!" infoline = linein(samba.!msg) infoline = linein(samba.!msg) end IF options.!debug == 1 THEN say ' Response = "'Infoline'"' ok = stream(samba.!msg,'c','close') ok = SysFileDelete(samba.!msg) window = VRLoadSecondary( "SW_INFO", "W" ) IF options.!debug == 1 THEN SAY time()' Menu_Selected_Info_Click done' return /*:VRX Menu_Selected_Remove_Click */ Menu_Selected_Remove_Click: ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "selrec." ) if selrec.0 = 0 then return do I = 1 to selrec.0 if VRMethod("CN_CONDET", "GetFieldData", selrec.I, cd.statusfh) = '#68:PMWP.DLL' then do CALL VRMethod 'CN_CONDET', 'RemoveRecord', selrec.I end else do mountpoint = VRMethod('CN_CONDET', "GetFieldData", selrec.I, cd.mpointfh) mpidx = VRMethod('CN_CONDET', "GetFieldData", selrec.I, cd.mpidxfh) if mpidx = 1 then do btns.0 = 2 btns.1 = NLVGetMessage( 6 ) btns.2 = NLVGetMessage( 7 ) confirm = VRMessage('Main', NLVGetMessage( 72, mountpoint ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 ) IF confirm \= 1 THEN RETURN dyn ="ok = "fs.!prefix"RxUnmount( mountpoint, mpidx )" IF options.!debug == 1 THEN SAY time()' '||dyn interpret dyn; drop dyn CALL VRMethod 'CN_CONDET', 'RemoveRecord', selrec.I CALL Refresh end else do CALL VRMessage 'Main', NLVGetMessage( 71 ) , NLVGetMessage( 89 )||" "||mountpoint , 'E' end end end return /*:VRX Menu_Selected_Retry_Click */ Menu_Selected_Retry_Click: PROCEDURE EXPOSE settings. options. vfs. fs. advanced. cd. samba. ok = VRMethod( "CN_CONDET", "GetRecordList", "SourceOrSelected", "srcrec." ) if srcrec.0 = 0 then return srcrec = srcrec.1 p_mpoint = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.MpointFH) p_workgroup = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.WorkgroupFH) p_server = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.ServerFH) p_share = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.ShareFH) p_user = VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.UserFH) p_password = x2c(VRMethod("CN_CONDET", "GetFieldData", srcrec, CD.SpasswordFH)) ShareLevel = 1 if p_share = "" then ShareLevel = 2 if p_server = "" then ShareLevel = 3 if p_workgroup = "" then ShareLevel = 4 ok = VRSet( "CB_MOUNT", "Selected", Sharelevel ) ok = VRset("CB_MOUNT" , "Value", mtype.sharelevel) ok = VRset("EF_SERVER" , "Value", p_server) ok = VRset("EF_SHARE" , "Value", p_share) ok = VRset("EF_NETWORK", "Value", p_workgroup) ok = VRset("EF_USER" , "Value", p_user) ok = VRset("EF_PASSWORD", "Value", p_password) parse var p_mpoint p_drv '\' p_dir p_dir = strip(p_dir,'T','\') ok = VRset("CB_DRIVES" , "Value", p_drv) ok = VRset("EF_DIRECTORY" , "Value", p_dir) CALL PB_MOUNT_Click if VRMethod( 'CN_CONDET', "ValidateRecord", srcRec) = 1 then do if VRMethod("CN_CONDET", "GetRecordAttr", srcRec, "Icon") = '#68:PMWP.DLL' then ok = VRMethod( "CN_CONDET", "RemoveRecord", srcRec) end return /*:VRX Menu_View_Buttons_Click */ Menu_View_Buttons_Click: current_height = VRGet("Main", "Height") buttons_height = margin * 2 + 400 if settings.!buttonson = 1 then do ok = VRSet("Menu_View_Buttons","Checked",0) ok = VRset("GB_Buttons","Visible", 0) options.!buttondelta = 0 settings.!buttonson = 0 new_height = current_height - buttons_height end else do ok = VRSet("GB_Buttons","Visible", 1) ok = VRSet("Menu_View_Buttons","Checked",1) options.!buttondelta = buttons_height settings.!buttonson = 1 new_height = current_height + buttons_height end ok = VRSet("Main", "Height", new_height ) return /*:VRX Menu_View_ConDet_Click */ Menu_View_ConDet_Click: if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 0) ok = VRset("GB_SMBTREE","Visible", 0) ok = VRset("GB_SMBTREE","Painting", 0) ok = VRset("GB_Dialog", "Visible", 0) ok = VRset("GB_Dialog", "Painting", 0) ok = VRset("GB_CONDET", "Visible", 1) ok = VRset("GB_CONDET", "Painting", 1) ok = VRSet("Menu_View_SmbTree","Checked", 0) ok = VRSet("Menu_View_Dialog", "Checked", 0) ok = VRSet("Menu_View_ConDet", "Checked", 1) /* Hide any "foreign" menu entries */ ok = VRSet("Menu_Selected_Connect", "Visible", 0) return /*:VRX Menu_View_Dialog_Click */ Menu_View_Dialog_Click: if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 0) ok = VRset("GB_SMBTREE","Visible", 0) ok = VRset("GB_SMBTREE","Painting", 0) ok = VRset("GB_CONDET", "Visible", 0) ok = VRset("GB_CONDET", "Painting", 0) ok = VRset("GB_Dialog", "Visible", 1) ok = VRset("GB_Dialog", "Painting", 1) ok = VRSet("Menu_View_SmbTree","Checked", 0) ok = VRSet("Menu_View_ConDet", "Checked", 0) ok = VRSet("Menu_View_Dialog", "Checked", 1) ok = VRSet("Menu_Selected_Remove", "Visible", 0) ok = VRSet("Menu_Selected_Retry", "Visible", 0) ok = VRSet("Menu_Selected_Connect", "Visible", 0) call _DialogPopulate return /*:VRX Menu_View_MiniIcons_Click */ Menu_View_MiniIcons_Click: advanced.!bigicons = \advanced.!bigicons ok = VRset("CN_CURRENT", "MiniIcons", \advanced.!bigicons) ok = VRset("CN_SMBTREE", "MiniIcons", \advanced.!bigicons) ok = VRset("CN_CONDET", "MiniIcons", \advanced.!bigicons) ok = VRset("Menu_View_MiniIcons", "Checked", \advanced.!bigicons) return /*:VRX Menu_View_SmbTree_Click */ Menu_View_SmbTree_Click: if VRGet("TM_Throbber","Enabled") = 1 then ok = VRset("Pict_Throbber", "Visible", 1) ok = VRset("GB_Dialog", "Visible", 0) ok = VRset("GB_Dialog", "Painting", 0) ok = VRset("GB_CONDET", "Visible", 0) ok = VRset("GB_CONDET", "Painting", 0) ok = VRset("GB_SMBTREE","Painting", 1) ok = VRset("GB_SMBTREE","Visible", 1) ok = VRSet("Menu_View_Dialog","Checked", 0) ok = VRSet("Menu_View_ConDet","Checked", 0) ok = VRSet("Menu_View_SmbTree","Checked", 1) /* Hide any "foreign" menu entries */ ok = VRSet("Menu_Selected_Remove", "Visible", 0) ok = VRSet("Menu_Selected_Retry", "Visible", 0) return /*:VRX Mount */ Mount: PROCEDURE EXPOSE settings. options. vfs. fs. advanced. cd. samba. IF options.!debug == 1 THEN SAY time()' Mount procedure started' /* Set mouse pointer to wait - this operation might take a few seconds */ call VRSet VRWindow(), 'Pointer', 'Wait' /* Disabled because we merge profile now - in earlier revisions we replaced it but only for preexisting drives - this made only as long as we were unabled to detect double connections - this could be made an option! IF options.!autoload then do dyn = "ok = "fs.!prefix"RxDetach(vfs.!drive)" IF options.!debug == 1 THEN SAY time()' '||dyn interpret dyn; drop dyn IF options.!debug == 1 THEN SAY time()' '||'Autoload Detach "'vfs.!drive'" =' ok end */ /* Attach the virtual drive - only if drive is not already attached */ if pos(vfs.!drive,MyFreeDriveMap("C:","FREE")) > 0 then do dyn = "ok = "fs.!prefix"RxAttach( vfs.!drive )" IF options.!debug == 1 THEN SAY time()' '||dyn interpret dyn; drop dyn IF options.!debug == 1 THEN SAY time()' '||'Attach "'vfs.!drive'" =' ok end /* Create the mount point and store whether it was created or already existed */ dyn = "CreateMP = "fs.!prefix"RxCreateMountPoint( vfs.!mountpoint )" IF options.!debug == 1 THEN SAY time()' '||dyn interpret dyn; drop dyn IF options.!debug == 1 THEN SAY time()' '||'Create "'vfs.!mountpoint'" = 'CreateMP /* Build the resource parameter string */ src = '' IF options.!workgroup \= '' THEN src = src';WORKGROUP='options.!workgroup IF options.!server \= '' THEN src = src';SERVER='options.!server IF options.!share \= '' THEN src = src';SHARE='options.!share IF options.!user \= '' THEN src = src';USER='options.!user IF options.!password \= '' THEN src = src';PASSWORD='options.!password IF options.!spassword \= '' THEN src = src';SPASSWORD='options.!spassword IF options.!master \= '' THEN src = src';MASTER='options.!master IF options.!mastertype \= '' THEN src = src';MASTERTYPE='options.!mastertype /* IF options.!memlen \= '' THEN src = src';MEMLEN='options.!memlen IF options.!logfile \= '' THEN src = src';LOGFILE='options.!logfile IF options.!loglevel \= '' THEN src = src';LOGLEVEL='options.!loglevel */ IF options.!easupport \= '' THEN src = src';EASUPPORT='options.!easupport IF options.!readonly = 1 then rwFlag = 'R'; else rwFlag = 'W' parse var vfs.!mountpoint mpoint ';' . mpoint = strip(mpoint,'T','\')||'\' if options.!master = "" then options.!master = "WORKGROUP" if options.!mtype = "" then options.!mtype = "1" if options.!loglevel = "" then options.!loglevel = "0" if options.!memlen = "" then options.!memlen = "2" if options.!easupport= "" | options.!easupport= " " then options.!easupport = strip(options.!easupport) if options.!password <> "" & options.!spassword = "" then do options.!spassword = c2x(options.!password) options.!password = "" end hashstr = mpoint' 'translate(options.!workgroup)' 'translate(options.!server)' 'translate(options.!share)' 'options.!user' 'options.!spassword' 'options.!easupport' 'rwFlag md5 = rexx_md5(hashstr) CALL VRMethod 'CN_CONDET', 'GetRecordList', 'All', 'records.' DO i = 1 TO records.0 hash = VRMethod("CN_CONDET","GetFieldData", records.i, cd.hashfh) IF options.!debug == 1 THEN say VRMethod("CN_CONDET","GetFieldData", records.i, CD.mpointFH)'->'hash IF options.!debug == 1 THEN say mpoint'->'md5 if hash = md5 then do If VRMethod("CN_CONDET","GetFieldData", records.i, cd.statusfh) = '#64:PMWP.DLL' then do /* Same hash, status active */ say "Double connection detected!!" if options.!spassword <> "" then upw = ":********" else upw = "" buttons.0 = 2 buttons.1 = NLVGetMessage(9) buttons.2 = NLVGetMessage(3) Answer = VRMessage('Main',NLVGetMessage(64) , NLVGetMessage( 36,options.!user||upw'@'options.!workgroup'\\'options.!server'\'options.!share, vfs.!mountpoint ), 'W','buttons.') if Answer = 2 then do call VRSet VRWindow(), 'Pointer', '' say "Double connection - do not mount!!" return end end else do /* Same hash, status passive - we have to remove it */ ok = VRMethod("CN_CONDET", "RemoveRecord", records.i ) end end end cd.lastrh = "" ok = ParseResourceData(vfs.!mountpoint,'SMBFS SMBFS64 \\'options.!workgroup':'options.!server'\'options.!share'@'options.!user||src' 'rwFlag) /* Now mount the resource */ dyn ="ok = "fs.!prefix"RxMount('smbfs', vfs.!mountpoint, src, rwFlag)" IF options.!debug == 1 THEN SAY time()' '||dyn interpret dyn; drop dyn IF options.!debug == 1 THEN SAY time()' '||'Mount "'vfs.!mountpoint'" =' ok if ok <> 0 then do if options.!password <> "" then upw = ":********" else upw = "" buttons.0 = 2 buttons.1 = NLVGetMessage(2) buttons.2 = NLVGetMessage(37) Answer = VRMessage('Main', SysGetMessage(ok), NLVGetMessage( 36, options.!user||upw'@'options.!workgroup'\\'options.!server'\'options.!share, vfs.!mountpoint ), 'W','buttons.') if Answer = 2 then do /* Show explanation */ 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') end if cd.lastrh <> '' then do ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, '#68:PMWP.DLL') /* Passive Connection icon */ ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", '#68:PMWP.DLL') /* Passive Connection icon */ ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.passwordfh, '') /* remove pain text password */ end /* In case the mountpoint was created for this failed operation, it is (optionally) removed again */ if CreateMP = 0 & advanced.!alwaysmp <> 1 then do dyn ="ok = "fs.!prefix"RxDeleteMountPoint( vfs.!mountpoint )" interpret dyn IF options.!debug == 1 THEN SAY time()' '||'Remove "'vfs.!mountpoint'" = 'ok end end drop CreateMP /* not required anymore */ /* Obsolete - the IOCtl will not be implemented this way in the plugin The REXX function is present, but is has no counterpart in the plugin ok = EvfsRxIoctl( 100 , vfs.!mountpoint, outstring) IF options.!debug == 1 THEN SAY time()' '||'RxIoctl "'vfs.!mountpoint'" = 'ok', 'outstring */ /* Set mouse pointer to default again */ call VRSet VRWindow(), 'Pointer', '' IF options.!debug == 1 THEN SAY time()' Mount procedure done' RETURN ok /*:VRX MyFreeDriveMap */ MyFreeDriveMap: procedure expose options. fs. samba. IF options.!debug == 1 THEN SAY time()' MyFreeDriveMap(proc) started' 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:" /* IF options.!debug == 1 THEN SAY time()' '||"SysDriveMap(USED) started" */ useddrives= SysDriveMap("C:","USED") /* IF options.!debug == 1 THEN SAY time()' '||"SysDriveMap(USED) done" */ Alldr = words(alldrives) FreeDriveMap = "" do I = 1 to AllDr if word(alldrives,1) = word(useddrives,1) then do Useddrives = subword(useddrives,2) Alldrives = subword(Alldrives,2) end else do FreeDriveMap = FreeDriveMap||word(alldrives,1)||' ' Alldrives = subword(Alldrives,2) end end IF options.!debug == 1 THEN SAY time()' MyFreeDriveMap(proc) done, result "'FreeDriveMap'"' return FreeDriveMap /*:VRX NoEVFSCALL */ NoEVFSCALL: CALL VRMessage 'Main', NLVGetMessage( 100 ), NLVGetMessage( 5 ), 'E' signal Halt RETURN /*:VRX ParseCommandLine */ ParseCommandLine: IF options.!debug == 1 THEN SAY time()' ParseCommandLine() started' CmdLine = VRGet("Application","Commandline") upCmdLine = translate(CmdLine) IF options.!debug == 1 THEN SAY ' Commandline = "'CmdLine'"' ForceNDFS = 0 if wordpos('-NDFS',upCmdLine) > 0 then do IF options.!debug == 1 THEN SAY " NDFS switch detected" CmdLine = delWord(CmdLine,wordpos('-NDFS',upCmdLine),1) upCmdLine = translate(CmdLine) ForceNDFS = 1 CALL VRSet "PB_AutoStart","Visible", 0 end if wordpos('-AUTOCLOSE',upCmdLine) > 0 then do options.!autoclose = 1 IF options.!debug == 1 THEN SAY " AutoClose switch detected" CmdLine = delWord(CmdLine,wordpos('-AUTOCLOSE',upCmdLine),1) upCmdLine = translate(CmdLine) end if wordpos('-NOGUI',upCmdLine) > 0 then do options.!nogui = 1 options.!autoclose = 1 IF options.!debug == 1 THEN SAY " -NOGUI switch detected" CmdLine = delWord(CmdLine,wordpos('-NOGUI',upCmdLine),1) upCmdLine = translate(CmdLine) end Profile = strip(CmdLine,,'"') if Profile <> "" then do Profile = strip(VRParseFilename(Profile,"DPNE")) options.!autoload = 1 IF options.!debug == 1 THEN SAY ' Profile = "'Profile'"' if \VRFileExists(Profile) then do CALL VRMessage 'Main', NLVGetMessage( 102, Profile ), NLVGetMessage( 1 ), 'E' /* Disable all switches in case of an error */ options.!autoload = 0 options.!autoclose = 0 options.!nogui = 0 end end IF options.!debug == 1 THEN SAY time()' ParseCommandLine done' return /*:VRX ParseResourceData */ ParseResourceData: PROCEDURE EXPOSE userdata options. advanced. fs. cd. samba. PARSE ARG userdata, resdata IF options.!debug == 1 THEN SAY time()' ParseResourceData started' IF options.!debug == 1 THEN SAY ' receiving "'userdata'" "'resdata'" length ('length(resdata)')' /* WARNING! resdata has a maximal length of 255 and is truncated otherwise */ /* PARSE VAR resdata . ';WORKGROUP='p_domain';SERVER='p_server';SHARE='p_share';' . */ if left(word(resdata,1),5) <> "SMBFS" then do /* Support for other filesystems would come here! */ userData = "UNKNOWN" end else do cd.lastrh = VRMethod("CN_CONDET","AddRecord") PARSE VAR userdata p_mpoint ';' p_mpidx ';' . p_mpoint = strip(p_mpoint,'T','\')||'\' p_rw = word(resdata, words(resdata)) /* Workaround for truncated resdata string */ if length(p_rw) > 1 then do /* The resdata string must have been truncated p_rw is already wrong and p_easupport will most likely be also wrong (look below for workaround!) */ p_rw ="W" /* this is guessed only!!! */ IF options.!debug == 1 THEN SAY ' WARNING! Detected truncated resdata string - shorten workgroup name, server name, share name until this message goes away!' end /* this should be done unconditionally if the resdata string is never truncated */ else resdata = left(resdata,length(resdata)-length(p_rw)) PARSE VAR resdata . 'WORKGROUP=' p_domain ';' . PARSE VAR resdata . 'SERVER=' p_server ';' . PARSE VAR resdata . 'SHARE=' p_share ';' . PARSE VAR resdata . 'USER=' p_user ';' . PARSE VAR resdata . ';PASSWORD=' p_password ';' . PARSE VAR resdata . 'SPASSWORD=' p_spassword ';' . PARSE VAR resdata . 'MASTER=' p_master ';' . PARSE VAR resdata . 'MASTERTYPE=' p_mtype ';' . PARSE VAR resdata . 'MEMLEN=' p_memlen ';' . PARSE VAR resdata . 'LOGFILE=' p_logfile ';' . PARSE VAR resdata . 'LOGLEVEL=' p_loglevel ';' . PARSE VAR resdata . 'EASUPPORT=' p_easupport ' ' if p_master = "" then p_master = "WORKGROUP" if p_mtype = "" then p_mtype = "1" if p_loglevel = "" then p_loglevel = "0" if p_memlen = "" then p_memlen = "2" /* Also works around for a truncated resdata string! */ if p_easupport= "" | p_easupport= " " then p_easupport = strip(options.!easupport) if p_password <> "" & p_spassword = "" then do p_spassword = c2x(p_password) p_password = "" end ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.mpointFH, p_mpoint, cd.mpidxfh, p_mpidx, cd.workgroupfh, p_domain, cd.serverfh, p_server, cd.sharefh, p_share, cd.userfh, p_user) ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.passwordfh, p_password, cd.spasswordfh, p_spassword, cd.masterfh, p_master, cd.mtypefh, p_mtype) 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) ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.statusfh, '#64:PMWP.DLL') /* Active */ ok = VRMethod("CN_CONDET", "SetRecordAttr", cd.lastrh, "Icon", '#64:PMWP.DLL') /* Active */ hashstr = p_mpoint' 'translate(p_domain)' 'translate(p_server)' 'translate(p_share)' 'p_user' 'p_spassword' 'p_easupport' 'p_rw md5 = rexx_md5(hashstr) ok = VRMethod("CN_CONDET", "SetFieldData", cd.lastrh, cd.hashfh,md5) SELECT WHEN p_share == '' & p_server \= '' THEN DO /* all shares on server */ IF p_domain == '' THEN userdata = userdata';\\'p_server'\*' ELSE userdata = userdata';'p_domain':\\'p_server'\*' END WHEN p_server == '' & p_domain \= '' THEN /* all servers in workgroup */ userdata = userdata';'p_domain':\\*' WHEN p_server == '' & p_domain == '' THEN /* all workgroups */ userdata = userdata';*:\\*' OTHERWISE DO IF p_domain == '' THEN userdata = userdata';\\'p_server'\'p_share ELSE userdata = userdata';'p_domain':\\'p_server'\'p_share END END end IF options.!debug == 1 THEN SAY ' returning "'userdata'"' IF options.!debug == 1 THEN SAY time()' ParseresdataData done' RETURN userdata /*:VRX PB_ADVANCED_Click */ PB_ADVANCED_Click: adv_changed = 0 CALL VRLoadSecondary "SW_ADVANCED", "W" IF adv_changed == 1 THEN DO advanced.!memlen = adv_memlen advanced.!easupport = adv_eas advanced.!readonly = adv_readonly advanced.!alwaysmp = adv_alwaysmp END RETURN /*:VRX PB_ADVCANCEL_Click */ PB_ADVCANCEL_Click: adv_changed = 0 CALL SW_ADVANCED_Close RETURN /*:VRX PB_ADVHELP_Click */ PB_ADVHELP_Click: CALL VRMethod 'SW_ADVANCED', 'InvokeHelp' return /*:VRX PB_ADVOK_Click */ PB_ADVOK_Click: adv_memlen = VRGet( "SPB_MEMLEN", "Value" ) adv_eas = VRGet( "CB_EAS", "Set" ) adv_readonly = VRGet( "CB_READONLY", "Set" ) adv_alwaysmp = VRGet( "CB_ALWAYSMP", "Set" ) CALL SW_ADVANCED_Close return /*:VRX PB_AUTOSTART_Click */ PB_AUTOSTART_Click: /* PROCEDURE EXPOSE settings. options. Profile fs. cd. advanced. samba. */ options.!autostart = 1 Profile = VRParseFilename(settings.!ini,'DPN')'.'fs.!profileext ExeName = VRParseFileName(VRget("Application","Program"),'DPNE') if ExeName = "" then do parse source . . script ExeName = VRParseFilename(script,'DP')'\EVFSGUI.EXE' end StartupDir = VRParseFileName(VRget("Application","Program"),'DP') if StartupDir = "" then do parse source . . script StartUpDir = VRParseFilename(script,'DP') end ObjTitle = NLVGetMessage( 59 ) if ObjTitle = "" then ObjTitle = '[EVFS LAN-Connections]' CALL PB_SAVE_Click rc = CreateObject( 'WPProgram', ObjTitle,'',, 'EXENAME='||ExeName||';'||, 'PROGTYPE=PM;'||, 'TITLE='ObjTitle';'||, 'PARAMETERS='Profile' -AUTOCLOSE -NOGUI;'||, 'STARTUPDIR='StartupDir';'||, 'NOPRINT=YES;'||, 'HIDEBUTTON=DEFAULT;'||, 'MINWIN=DEFAULT;'||, 'CCVIEW=DEFAULT;'||, 'DEFAULTVIEW=DEFAULT;'||, 'OBJECTID=',, 'REPLACE' ) IF rc == 1 THEN do Text = NLVGetMessage( 60 ) if Text = "" then Text = '[Created object in Autostart-Folder]' CALL VRMessage 'Main', Text, VRGet("Main", "Caption") end ELSE do Text = NLVGetMessage( 61 ) if Text = "" then Text = '[Could not create object in Autostart-Folder]' Title = NLVGetMessage( 5 ) if Title = "" then Title = '[Error]' CALL VRMessage 'Main', Text, Title, 'E' end options.!autostart = 0 RETURN /*:VRX PB_CLOSE_Click */ PB_CLOSE_Click: CALL Quit return /*:VRX PB_CONDET_LOAD_Click */ PB_CONDET_LOAD_Click: IF options.!debug == 1 THEN SAY time()' '||"PB_REFRESH_Click started" call PB_LOAD_CLICK IF options.!debug == 1 THEN SAY time()' '||"PB_REFRESH_Click done" RETURN /*:VRX PB_CONDET_SAVE_Click */ PB_CONDET_SAVE_Click: PROCEDURE EXPOSE settings. options. Profile fs. cd. advanced. samba. IF options.!debug == 1 THEN SAY time()' '||"PB_CONDET_SAVE_Click started" if options.!autostart == 0 THEN filename = VRFileDialog('Main', NLVGetMessage( 50 ), 'S', '*.'fs.!profileext) ELSE filename = Profile IF filename == '' THEN RETURN IF STREAM( filename, 'C', 'QUERY EXISTS') \= '' THEN DO btns.0 = 2 btns.1 = NLVGetMessage( 6 ) if btns.1 = "" then btns.1 = '[Yes]' btns.2 = NLVGetMessage( 7 ) if btns.2 = "" then btns.2 = '[No]' Title = NLVGetMessage( 53 ) if Title = "" then Title = "[File exists]" Text = NLVGetMessage( 54, filename ) if Text = "" then Text = "[File "filename" exists? Overwrite?]" confirm = VRMessage('Main', Text, Title, 'W', 'btns.', 1, 2 ) IF confirm \= 1 THEN RETURN CALL VRChAttr filename,, 'HSR' CALL VRDeleteFile filename END CALL VRMethod 'CN_CONDET', 'GetRecordList', 'All', 'records.' DO i = 1 TO records.0 resdata = "" resdata = resdata||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mpointfh)||" " resdata = resdata||'\\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgroupfh) resdata = resdata||':'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh) resdata = resdata||'\'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh) resdata = resdata||'@'||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh) resdata = resdata||';WORKGROUP='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.workgroupfh) resdata = resdata||';SERVER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.serverfh) resdata = resdata||';SHARE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.sharefh) resdata = resdata||';USER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.userfh) resdata = resdata||';PASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.passwordfh) resdata = resdata||';SPASSWORD='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.spasswordfh) resdata = resdata||';MASTER='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.masterfh) resdata = resdata||';MASTERTYPE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.mtypefh) /* resdata = resdata||';MEMLEN='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.memlenfh) resdata = resdata||';LOGFILE='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.logfilefh) resdata = resdata||';LOGLEVEL='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.loglevelfh) */ resdata = resdata||';EASUPPORT='||VRMethod("CN_CONDET","GetFieldData", records.i, cd.easupportfh) resdata = resdata||' '||VRMethod("CN_CONDET","GetFieldData", records.i, cd.rwfh) call lineout filename, resdata END CALL STREAM filename, 'C', 'CLOSE' if options.!autostart == 0 THEN do Title = NLVGetMessage( 51 ) if Title = "" then Title = "[Profile saved]" Text = NLVGetMessage( 52, filename ) if Text = "" then Text = "[Profile saved to "filename"!]" CALL VRMessage 'Main', Text , Title, 'I' end IF options.!debug == 1 THEN SAY time()' '||"PB_CONDET_SAVE_Click done" RETURN /*:VRX PB_CONNECT_Click */ PB_CONNECT_Click: PROCEDURE EXPOSE settings. options. fs. advanced. cd. samba. IF options.!debug == 1 THEN SAY time()' '||"PB_CONNECT_Click started" ok = VRMethod( "CN_SMBTREE", "GetRecordList", "Selected", "SelRH." ) if SelRH.0 = 0 then do IF options.!debug == 1 THEN SAY time()' '||"PB_CONNECT_Click aborted" return end p_workgroup = '' p_server = '' p_share = '' srcFile = "" srcCtn = VRGet("CN_SMBTREE","Self") srcRec = SelRH.1 trgCtn = VRGet("CN_CURRENT","Self") trgRec = "" IF options.!debug == 1 THEN do say ' srcCtn = "'srcCtn'"' if srcCtn <> "" then say ' srcCtn name = "'VRGet(srcCtn,'Name')'"' say ' srcRec = "'srcRec'"' say ' trgCtn = "'trgCtn'"' if trgCtn <> "" then say ' trgCtn name = "'VRGet(trgCtn,'Name')'"' say ' trgRec = "'trgRec'"' end ok = VRMethod("CB_MOUNT", "GetStringList", "ShareLevels." ) DragCapt = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Caption") ParentRH = VRMethod(srcCtn, "GetRecordAttr", srcRec, "Parent") if ParentRH = "" then do /* A workgroup was dragged */ say "Workgroup dragged!" parse var DragCapt p_workgroup '0D0A'x . p_workgroup = strip(p_workgroup) ok = VRSet("EF_NETWORK","Value",strip(p_workgroup)) ok = VRSet("EF_SERVER","Value","") ok = VRSet("EF_SHARE","Value","") ShareLevel = 3 end else do ParDragCapt = VRMethod(srcCtn, "GetRecordAttr", ParentRH, "Caption") GParentRH = VRMethod(srcCtn, "GetRecordAttr", ParentRH, "Parent") if GParentRH = "" then do /* A server was dragged */ say "Server dragged!" parse var ParDragCapt p_workgroup '0D0A'x . ok = VRSet("EF_NETWORK","Value",strip(p_workgroup)) p_workgroup = strip(p_workgroup) parse var DragCapt p_server '0D0A'x . p_server = strip(p_server) ok = VRSet("EF_SERVER","Value",strip(p_server)) ok = VRSet("EF_Share","Value","") ShareLevel = 2 end else do /* A share was dragged */ say "Share dragged!" GParDragCapt = VRMethod(srcCtn, "GetRecordAttr", GParentRH, "Caption") parse var GParDragCapt p_workgroup '0D0A'x . p_workgroup = strip(p_workgroup) ok = VRSet("EF_NETWORK","Value",strip(p_workgroup)) parse var ParDragCapt p_server '0D0A'x . p_server = strip(p_server) ok = VRSet("EF_SERVER","Value",strip(p_server)) parse var DragCapt p_share '0D0A'x . p_share = strip(p_share) ok = VRSet("EF_Share","Value",strip(p_share)) ShareLevel = 1 end end say 'p_workgroup = "'p_workgroup'"' say 'p_server = "'p_server'"' say 'p_share = "'p_share'"' ok = VRSet( "CB_MOUNT", "Selected", Sharelevel ) call CB_MOUNT_Change if trgRec = "" then do window = VRLoadSecondary( "SW_MOUNTPOINT", "W" ) if VRGet("CB_DRIVES","Value") = "" then return end else do TargetString = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Caption") parTrgRH = VRMethod(trgCtn, "GetRecordAttr", trgRec, "Parent") do while parTrgRH <> "" partrgCapt = VRMethod(trgCtn, "GetRecordAttr", partrgRH, "Caption") TargetString = partrgCapt||'\'||TargetString parTrgRH = VRMethod(trgCtn, "GetRecordAttr", partrgRH , "Parent") end say 'TargetString = "'TargetString'"' ok = VRSet("CB_DRIVES","Value", left(TargetString,2)) ok = VRSet("EF_DIRECTORY","Value", substr(TargetString,4)) end window = VRLoadSecondary( "SW_LOGIN", "W" ) call PB_MOUNT_CLICK IF options.!debug == 1 THEN SAY time()' '||"PB_CONNECT_Click done" RETURN /*:VRX PB_DETACH_Click */ PB_DETACH_Click: PROCEDURE EXPOSE settings. options. fs. cd. samba. IF options.!debug == 1 THEN SAY time()' '||"PB_DETACH_Click started" CALL VRMethod 'CN_CURRENT', 'GetRecordList', 'Selected', 'select.' IF select.0 < 1 THEN RETURN userdata = VRMethod( 'CN_CURRENT', 'GetRecordAttr', select.1, 'UserData') PARSE VAR userdata mountpoint ';' mounts ';' . drive = STRIP( mountpoint, 'T', '\') btns.0 = 2 btns.1 = NLVGetMessage( 6 ) btns.2 = NLVGetMessage( 7 ) confirm = VRMessage('Main', NLVGetMessage( 58, drive ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 ) IF confirm \= 1 THEN RETURN /* TODO: ?? Unmount & delete all child mountpoints? */ /* Unmount any resources */ DO i = 1 TO mounts dyn ="ok = "fs.!prefix"RxUnmount( mountpoint, i-1 )" IF options.!debug == 1 THEN SAY time()' '||dyn interpret dyn; drop dyn /* IF options.!debug == 1 THEN SAY time()' '||'Unmount resource' i-1 '=' ok */ END dyn ="ok = "fs.!prefix"RxDetach( drive )" IF options.!debug == 1 THEN SAY time()' '||dyn interpret dyn; drop dyn /* IF options.!debug == 1 THEN SAY time()' '||'Detach' drive '=' ok */ CALL Refresh IF options.!debug == 1 THEN SAY time()' '||"PB_DETACH_Click done" RETURN /*:VRX PB_EDITCANCEL_Click */ PB_EDITCANCEL_Click: options.!editmode = 0 CALL VRSet "PB_UNMOUNT","Enabled", 1 CALL VRSet "PB_SAVE","Enabled", 1 CALL VRSet "PB_LOAD","Enabled", 1 CALL VRSet "GB_CURRENT", "ENABLED", 1 ok = VRSet("PB_EDITCANCEL","Visible", 0) CALL NLVSetText 'DT_DIALOG', 'Caption', 13 RETURN 0 /*:VRX PB_HELP_Click */ PB_HELP_Click: CALL VRMethod 'Main', 'InvokeHelp' return /*:VRX PB_INFO_OK_Click */ PB_INFO_OK_Click: call SW_INFO_Close RETURN /*:VRX PB_LOAD_Click */ PB_LOAD_Click: PROCEDURE EXPOSE settings. options. advanced. vfs. Profile fs. cd. samba. IF options.!autoload == 1 then filename = Profile else filename = VRFileDialog('Main', NLVGetMessage( 55 ), 'L', '*.'fs.!profileext) IF filename == '' THEN RETURN IF STREAM( filename, 'C', 'QUERY EXISTS') == '' THEN DO CALL VRMessage 'Main', NLVGetMessage( 56, filename ), NLVGetMessage( 5 ), 'E' RETURN END CALL LINEIN filename, 1, 0 DO WHILE LINES( filename ) PARSE VALUE LINEIN( filename ) WITH node resource rwFlag vfs.!drive = FILESPEC('DRIVE', node ) vfs.!mountpoint = STRIP( node, 'T', '\') /* In case we only have a volume we reattach the backslash, otherwise restore will fail */ if vfs.!drive = vfs.!mountpoint then vfs.!mountpoint = vfs.!mountpoint||'\' PARSE VAR resource . 'WORKGROUP=' workgroup ';' . PARSE VAR resource . 'SERVER=' server ';' . PARSE VAR resource . 'SHARE=' share ';' . PARSE VAR resource . 'USER=' user ';' . PARSE VAR resource . 'PASSWORD=' password ';' . PARSE VAR resource . 'SPASSWORD=' spassword ';' . PARSE VAR resource . 'MASTER=' master ';' . PARSE VAR resource . 'MASTERTYPE=' mtype ';' . /* PARSE VAR resource . 'MEMLEN=' memlen ';' . PARSE VAR resource . 'LOGFILE=' logfile ';'. PARSE VAR resource . 'LOGLEVEL=' loglevel ';' . */ PARSE VAR resource . 'EASUPPORT=' easupport . options.!workgroup = workgroup options.!server = server options.!share = share options.!user = user options.!password = password options.!spassword = spassword options.!master = master options.!mastertype = mtype /* options.!memlen = memlen options.!logfile = logfile options.!loglevel = loglevel */ options.!easupport = easupport IF rwFlag == 'R' THEN options.!readonly = 1 ELSE options.!readonly = 0 CALL Mount END CALL STREAM filename, 'C', 'CLOSE' options.!autoload = 0 CALL Refresh RETURN /*:VRX PB_LOGIN_CANCEL_Click */ PB_LOGIN_CANCEL_Click: call SW_LOGIN_Close RETURN 0 /*:VRX PB_LOGIN_OK_Click */ PB_LOGIN_OK_Click: ok = VRSet("EF_USER","Value",VRGet("EF_USER1","Value")) ok = VRSet("EF_PASSWORD","Value",VRGet("EF_PASSWORD1","Value")) call SW_LOGIN_Close RETURN /*:VRX PB_MOUNT_Click */ PB_MOUNT_Click: IF options.!debug == 1 THEN SAY time()' '||"PB_MOUNT_Click started" ok = VRSet("TM_RefreshCurrentDisplay","Enabled", 0) say "network = "network if options.!editmode = 1 then do CALL PB_UNMOUNT_Click options.!editmode = 0 CALL NLVSetText 'DT_DIALOG', 'Caption', 13 CALL VRSet "PB_UNMOUNT","Enabled", 1 CALL VRSet "PB_SAVE","Enabled", 1 CALL VRSet "PB_LOAD","Enabled", 1 CALL VRSet "GB_CURRENT", "ENABLED", 1 end options.!workgroup = '' options.!server = '' options.!share = '' options.!user = '' options.!password = '' options.!master = '' options.!mastertype = '' options.!memlen = advanced.!memlen options.!easupport = advanced.!easupport options.!readonly = advanced.!readonly options.!loglevel = advanced.!loglevel options.!logfile = advanced.!logfile vfs.!drive = '' vfs.!mountpoint = '' stype = VRGet( "CB_MOUNT", "Selected" ) share = STRIP( VRGet( "EF_SHARE", "Value" )) server = STRIP( VRGet( "EF_SERVER", "Value" )) network = STRIP( VRGet( "EF_NETWORK", "Value" )) mtype = VRGet( "CHK_MTYPE", "Set" ) userid = STRIP( VRGet( "EF_USER", "Value" )) password = STRIP( VRGet( "EF_PASSWORD", "Value" )) mdrive = VRGet( "CB_DRIVES", "SelectedText" ) if mdrive = "" then mdrive = VRGet( "CB_DRIVES", "Value" ) mpath = STRIP( VRGet( "EF_DIRECTORY", "Value" )) IF ( stype < 1 | stype > 4 ) THEN stype = 1 /* The required/optional/ignored parameters depend on the type of mount * requested. (Note, however, that the user, password, easupport and * memlen parameters are always optional.) */ SELECT /* Scenario 1: Mount a single share. * Required: share, server * Optional: workgroup * Unused: master, mastertype */ WHEN stype = 1 THEN DO IF server == '' | share == '' THEN DO /* error */ RETURN 1 END options.!server = server options.!share = share options.!workgroup = network END /* Scenario 2: Mount all shares on a server. * Required: server * Optional: workgroup * Unused: share, master, mastertype */ WHEN stype = 2 THEN DO IF server == '' THEN DO /* error */ RETURN 1 END options.!server = server options.!workgroup = network END /* Scenario 3: Mount all servers in a workgroup. * Required: workgroup * Optional: - * Unused: share, server, master, mastertype */ WHEN stype = 3 THEN DO IF workgroup == '' THEN DO /* error */ RETURN 1 END options.!workgroup = network END /* Scenario 4: Mount all workgroups known to a master. * Required: master, mastertype * Optional: - * Unused: share, server, workgroup */ WHEN stype = 4 THEN DO IF master == '' | mastertype == '' THEN DO /* error */ RETURN 1 END options.!master = network options.!mastertype = mtype END END options.!user = userid options.!password = password vfs.!drive = mdrive vfs.!mountpoint = mdrive'\'mpath CALL Mount CALL Refresh ok = VRSet("TM_RefreshCurrentDisplay","Enabled", 1) IF options.!debug == 1 THEN SAY time()' '||"PB_MOUNT_Click done" RETURN 0 /*:VRX PB_NEWMOUNTPOINTCANCEL_Click */ PB_NEWMOUNTPOINTCANCEL_Click: ok = VRSet("CB_DRIVES","Value","") ok = VRSet("EF_DIRECTORY","Value","") call SW_MOUNTPOINT_Close RETURN 0 /*:VRX PB_NEWMOUNTPOINTOK_Click */ PB_NEWMOUNTPOINTOK_Click: ok = VRSet("CB_DRIVES","Value",VRGet("CB_DRIVES1","Value")) ok = VRSet("EF_DIRECTORY","Value",VRGet("EF_DIRECTORY1","Value")) advanced.!readonly = VRGet("CB_READONLY1","Set") advanced.!easupport = VRGet("CB_EAS1","Set") advanced.!alwaysmp = VRGet("CB_ALWAYSMP1","Set") say "advanced.!readonly = "advanced.!readonly say "options.!readonly = "options.!readonly call SW_MOUNTPOINT_Close RETURN /*:VRX PB_PROGRESS_ABORT_Click */ PB_PROGRESS_ABORT_Click: options.!autoload = 0 options.!autoclose = 0 call VRSet 'Main', 'Visible', 1 call SW_PROGRESS_Close return /*:VRX PB_REFRESH_Click */ PB_REFRESH_Click: PROCEDURE EXPOSE settings. options. fs. samba. debuglevel advanced. UserCred Refreshmode IF options.!debug == 1 THEN SAY time()' '||"PB_REFRESH_Click started" call _UserCredUpdate ok = VRset("Pict_Throbber", "Visible", 1) ok = VRset("Menu_Selected_Connect", "Visible", 0) ok = VRset("TM_Throbber", "Enabled", 1) ShowHidden = advanced.!special BroadCast = advanced.!broadcast ok = time('R') call _RefreshTree IF options.!debug == 1 THEN SAY time()' '||"PB_REFRESH_Click done" RETURN /*:VRX PB_SAVE_Click */ PB_SAVE_Click: PROCEDURE EXPOSE settings. options. Profile fs. cd. advanced. samba. call PB_CONDET_SAVE_Click /* if options.!autostart == 0 THEN filename = VRFileDialog('Main', NLVGetMessage( 50 ), 'S', '*.'fs.!profileext) ELSE filename = Profile IF filename == '' THEN RETURN IF STREAM( filename, 'C', 'QUERY EXISTS') \= '' THEN DO btns.0 = 2 btns.1 = NLVGetMessage( 6 ) btns.2 = NLVGetMessage( 7 ) confirm = VRMessage('Main', NLVGetMessage( 54, filename ), NLVGetMessage( 53 ), 'W', 'btns.', 1, 2 ) IF confirm \= 1 THEN RETURN CALL VRChAttr filename,, 'HSR' CALL VRDeleteFile filename END CALL VRMethod 'CN_CURRENT', 'GetRecordList', 'All', 'records.' DO i = 1 TO records.0 data = VRMethod('CN_CURRENT', 'GetRecordAttr', records.i, 'UserData') IF data == '' THEN ITERATE PARSE VAR data node ';' mounts ';' . dyn = "ok = "fs.!prefix"RxGetMount( node, 'info.', 'mounts.', 'resource.')" IF options.!debug == 1 THEN SAY time()' '||dyn interpret dyn; drop dyn IF ok \= 0 THEN ITERATE DO j = 1 TO resource.0 CALL LINEOUT filename, node SUBWORD( resource.j, 3 ) END END CALL STREAM filename, 'C', 'CLOSE' if options.!autostart == 0 THEN CALL VRMessage 'Main', NLVGetMessage( 52, filename ), NLVGetMessage( 51 ), 'I' */ RETURN /*:VRX PB_SETTINGS_CANCEL_Click */ PB_SETTINGS_CANCEL_Click: adv_changed = 0 CALL SW_SETTINGS_Close return /*:VRX PB_SETTINGS_HELP_Click */ PB_SETTINGS_HELP_Click: CALL VRMethod 'SW_SETTINGS', 'InvokeHelp' return /*:VRX PB_SETTINGS_OK_Click */ PB_SETTINGS_OK_Click: adv_loglevel = VRGet( "SPIN_LOGLEVEL", "Value" ) adv_logfile = VRGet( "EF_LOGFILE", "Value" ) adv_browseauth = VRGet( "CB_BROWSEAUTH", "Set" ) adv_browseimme = VRGet( "CB_BROWSEIMME", "Set" ) adv_debug = VRGet( "CB_DEBUG", "Set" ) adv_special = VRGet( "CB_SPECIAL", "Set" ) adv_savepassive= VRGet( "CB_SAVEPASSIVE","Set" ) adv_broadcast = VRGet( "CB_BROADCAST", "Set" ) adv_changed = 1 if adv_debug == 1 then do ok = VRRedirectStdio("ON") ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpidxfh , "Visible", 1) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.passwordfh , "Visible", 1) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.spasswordfh , "Visible", 1) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.masterFH , "Visible", 1) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mtypeFH , "Visible", 1) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.memlenfh , "Visible", 1) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.logfilefh , "Visible", 1) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.loglevelfh , "Visible", 1) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.hashfh , "Visible", 1) end else do ok = VRRedirectStdio("OFF") ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mpidxfh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.passwordfh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.spasswordfh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.masterFH , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.mtypeFH , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.memlenfh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.logfilefh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.loglevelfh , "Visible", 0) ok = VRMethod("CN_CONDET", "SetFieldAttr", cd.hashfh , "Visible", 0) end CALL SW_SETTINGS_Close return /*:VRX PB_UNMOUNT_Click */ PB_UNMOUNT_Click: PROCEDURE EXPOSE settings. options. fs. cd. samba. IF options.!debug == 1 THEN SAY time()' '||"PB_UNMOUNT_Click started" IF options.!debug == 1 THEN SAY time()' '||'options.!editmode = 'options.!editmode CALL VRMethod 'CN_CURRENT', 'GetRecordList', 'Selected', 'select.' IF select.0 < 1 THEN RETURN userdata = VRMethod( 'CN_CURRENT', 'GetRecordAttr', select.1, 'UserData') PARSE VAR userdata mountpoint ';' mounts ';' . say 'userdata="'userdata'"' IF mounts > 0 & options.!editmode = 0 THEN DO btns.0 = 2 btns.1 = NLVGetMessage( 6 ) btns.2 = NLVGetMessage( 7 ) confirm = VRMessage('Main', NLVGetMessage( 57, mountpoint ), NLVGetMessage( 8 ), 'Q', 'btns.', 1, 2 ) IF confirm \= 1 THEN RETURN END /* Unmount any resources */ DO i = 1 TO mounts dyn ="ok = "fs.!prefix"RxUnmount( mountpoint, i-1 )" IF options.!debug == 1 THEN SAY time()' '||dyn interpret dyn; drop dyn /* IF options.!debug == 1 THEN SAY time()' '||'Unmount resource' i-1 '=' ok */ END /* Delete mountpoint */ parent = VRMethod('CN_CURRENT', 'GetRecordAttr', select.1, 'Parent') IF parent \= '' THEN DO dyn ="ok = "fs.!prefix"RxDeleteMountPoint( mountpoint )" IF options.!debug == 1 THEN SAY time()' '||dyn interpret dyn; drop dyn /* IF options.!debug == 1 THEN SAY time()' '||'Delete mountpoint' mountpoint '=' ok */ END CALL Refresh IF options.!debug == 1 THEN SAY time()' '||"PB_UNMOUNT_Click done" RETURN 0 /*:VRX Quit */ Quit: if Fatal <> 1 then CALL SaveSettings ok = VRREdirectSTdio("OFF") window = VRWindow() call VRSet window, "Shutdown", 1 drop window RETURN /*:VRX Refresh */ Refresh: IF options.!debug == 1 THEN SAY time()' Refresh started' CALL VRSet 'CN_CURRENT', 'Painting', 0 CALL VRMethod 'CN_CURRENT', 'RemoveRecord', 'All' /* Remove Active connections from details view */ ok = VRMethod( 'CN_CONDET', "GetRecordList", 'All', "rh." ) do I = 1 to rh.0 /* This catches the bug we observed exactly once and were unable to reproduce! */ if cd.statusfh = 'CD.STATUSFH' then do call beep 880, 50 call beep 880, 50 IF options.!debug == 1 THEN say " cd.statusfh is undefined - check why!!!!!!" leave end IF options.!debug == 1 THEN say ' Icon.'i' = "'||VRMethod( "CN_CONDET", "GetFieldData", rh.i, cd.statusfh)'"' if VRMethod("CN_CONDET","GetFieldData", rh.i, cd.statusfh) = '#64:PMWP.DLL' then CALL VRMethod 'CN_CONDET', 'RemoveRecord', rh.i end /* call _AddTemplates */ CALL VRSet "PB_DETACH", "Enabled", 0 CALL VRSet "PB_UNMOUNT", "Enabled", 0 ok = VRSet("MENU_CONTEXT_OPEN", "Visible", 0) ok = VRSet("MENU_CONTEXT_SEP1", "Visible", 0) ok = VRSet("MENU_CONTEXT_DETACH", "Visible", 0) ok = VRSet("MENU_CONTEXT_UNMOUNT", "Visible", 0) ok = VRSet("MENU_CONTEXT_EDIT", "Visible", 0) ok = VRSet("MENU_SELECTED_REMOVE", "Visible", 0) ok = VRSet("MENU_SELECTED_RETRY", "Visible", 0) IF options.!debug == 1 THEN SAY ' Remove records, disable buttons done.' CALL VRMethod 'CB_DRIVES', 'Clear' /* Herwig B. CALL VRSet 'Main', 'StatusText', ' ' */ CALL VRSet 'CN_CURRENT', 'Caption', ' ' /* Herwig B. */ /* Herwig B.: Attention! The SysDrivemap function with the "free" parameter causes hangs in case it is called repeatedly! */ drvs = MyFreeDriveMap('C:', 'FREE') DO i = 1 TO WORDS( drvs ) drvstem.i = WORD( drvs, i ) END drvstem.0 = WORDS( drvs ) /* Add any existing EVFS drives */ CALL GetMountPoints CALL VRMethod "CB_DRIVES", "AddStringList", "drvstem." CALL VRSet 'CN_CURRENT', 'Painting', 1 IF options.!debug == 1 THEN SAY time()' '||"Refresh done" RETURN 0 /*:VRX SaveSettings */ SaveSettings: PROCEDURE EXPOSE settings. options. fs. advanced. cd. samba. IF options.!debug == 1 THEN SAY time()' '||"SaveSettings started" if advanced.!savepassive then call _PassiveSave /* This does not make sense anymore settings.!network = VRGet("EF_NETWORK","Value") CALL VRSetIni 'Settings', 'Network', settings.!network, settings.!ini, 'NoClose' */ font = VRGet('CN_CURRENT', 'Font') CALL VRSetIni 'Settings', 'ContainerFont', font, settings.!ini, 'NoClose' font = VRGet('Main', 'Font') CALL VRSetIni 'Settings', 'WindowFont', font, settings.!ini, 'NoClose' settings.!curbcolor = VRGet("DT_CURRENT","BackColor") CALL VRSetIni 'Settings', 'TitleBarBackground', settings.!curbcolor, settings.!ini, 'NoClose' settings.!curfcolor = VRGet("DT_CURRENT","ForeColor") CALL VRSetIni 'Settings', 'TitleBarForeground', settings.!curfcolor, settings.!ini, 'NoClose' settings.!buttonson = VRGet("Menu_View_Buttons","Checked") CALL VRSetIni 'Settings', 'ButtonsOn', settings.!buttonson, settings.!ini, 'NoClose' settings.!smbtreeon = VRGet("Menu_View_Smbtree","Checked") CALL VRSetIni 'Settings', 'SmbtreeOn', settings.!smbtreeon, settings.!ini, 'NoClose' settings.!dialogon = VRGet("Menu_View_Dialog","Checked") CALL VRSetIni 'Settings', 'DialogOn', settings.!dialogon, settings.!ini, 'NoClose' settings.!condeton = VRGet("Menu_View_ConDet","Checked") CALL VRSetIni 'Settings', 'ConDetOn', settings.!condeton, settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'BrowseAuth', advanced.!browseauth , settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'BrowseImme', advanced.!browseimme , settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'Debug', advanced.!debug , settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'AlwaysMP', advanced.!alwaysmp , settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'SpecialShares', advanced.!special , settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'BigIcons', advanced.!bigicons , settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'SavePassive', advanced.!savepassive, settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'Broadcast', advanced.!broadcast , settings.!ini, 'NoClose' /* Save position and size */ settings.!l = VRGet("Main", 'Left' ) settings.!t = VRGet("Main", 'Top' ) settings.!h = VRGet("Main", 'Height') settings.!w = VRGet("Main", 'Width' ) settings.!s = VRGet("SPLIT_Main", 'Left' ) CALL VRSetIni 'Settings', 'X', settings.!l, settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'Y', settings.!t, settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'H', settings.!h, settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'W', settings.!w, settings.!ini, 'NoClose' CALL VRSetIni 'Settings', 'S', settings.!s, settings.!ini IF options.!debug == 1 THEN SAY time()' '||"SaveSettings done" RETURN /*:VRX SPLIT_Main_Move */ SPLIT_Main_Move: ok = VRset("Main", "Painting", 0) NewPos = VRInfo("Left") OldPos = VRGet("SPLIT_Main","Left") ok = VRSet("SPLIT_Main","Left", NewPos) ok = VRset("GB_SMBTREE","Left",NewPos+60) call Main_Resize ok = VRset("Main", "Painting", 1) return /*:VRX StemsInit */ StemsInit: options.!workgroup = '' options.!server = '' options.!share = '' options.!user = '' options.!password = '' options.!spassword = '' options.!master = '' options.!mastertype = '' options.!memlen = '2' options.!easupport = '1' options.!readonly = '' options.!loglevel = 0 options.!logfile = '' options.!autoload = 0 options.!autoclose = 0 options.!nogui = 0 options.!autostart = 0 options.!editmode = 0 vfs.!drive = '' vfs.!mountpoint = '' advanced.!memlen = '' advanced.!easupport = '1' advanced.!readonly = '' advanced.!loglevel = '0' advanced.!logfile = '' advanced.!browseauth = '' advanced.!browseimme = '' advanced.!savepassive= '' advanced.!broadcast = '' advanced.!debug = '' advanced.!alwaysmp = '' advanced.!special = '' advanced.!bigicons = '' credentials.!username = "" credentials.!password = "" UserCred = "" RefreshMode = "" return /*:VRX SW_ADVANCED_Close */ SW_ADVANCED_Close: call SW_ADVANCED_Fini return /*:VRX SW_ADVANCED_Create */ SW_ADVANCED_Create: call SW_ADVANCED_Init return /*:VRX SW_ADVANCED_Fini */ SW_ADVANCED_Fini: window = VRInfo( "Window" ) call VRDestroy window drop window return /*:VRX SW_ADVANCED_Init */ SW_ADVANCED_Init: CALL NLVSetText 'SW_ADVANCED', 'Caption', 40 CALL NLVSetText 'GB_MISC', 'Caption', 43 CALL NLVSetText 'CB_EAS', 'Caption', 44 CALL NLVSetText 'CB_READONLY', 'Caption', 45 CALL NLVSetText 'CB_ALWAYSMP', 'Caption', 65 CALL NLVSetText 'PB_ADVOK', 'Caption', 2 CALL NLVSetText 'PB_ADVCANCEL', 'Caption', 3 CALL NLVSetText 'PB_ADVHELP', 'Caption', 4 CALL VRSet "SW_ADVANCED", "HelpTag", NLVGetMessage(40) /* Obsolete */ CALL NLVSetText 'GB_MEM', 'Caption', 41 IF advanced.!memlen \= '' THEN CALL VRSet 'SPB_MEMLEN', 'Value', advanced.!memlen IF advanced.!easupport \= '' THEN CALL VRSet 'CB_EAS', 'Set', advanced.!easupport IF advanced.!readonly \= '' THEN CALL VRSet 'CB_READONLY', 'Set', advanced.!readonly IF advanced.!alwaysmp \= '' THEN CALL VRSet 'CB_alwaysmp', 'Set', advanced.!alwaysmp window = VRInfo( "Object" ) if( \VRIsChildOf( window, "Notebook" ) ) then do call VRMethod window, "CenterWindow" call VRSet window, "Visible", 1 call VRMethod window, "Activate" end drop window return /*:VRX SW_INFO_Close */ SW_INFO_Close: call SW_INFO_Fini return /*:VRX SW_INFO_Create */ SW_INFO_Create: call SW_INFO_Init CALL NLVSetText 'SW_INFO', 'Caption', 92 CALL NLVSetText 'PB_INFO_OK', 'Caption', 2 Info.TypeFH = VRMethod( "CN_INFO", "AddField", "String", "Type" ) Info.ValueFH = VRMethod( "CN_INFO", "AddField", "String", "Value" ) parse var infoline "Domain=["WorkGroup"] OS=["OS"] Server=["Server"]"Rest Info.!domain = VRMethod( "CN_INFO", "AddRecord") ok = VRMethod( "CN_INFO", "SetFieldData", Info.!domain, Info.TypeFH, strip(NLVGetMessage(21),'T',':'),Info.ValueFH, Workgroup ) Info.!os = VRMethod( "CN_INFO", "AddRecord") ok = VRMethod( "CN_INFO", "SetFieldData", Info.!os, Info.TypeFH, strip(NLVGetMessage(93),'T',':'),Info.ValueFH, OS ) Info.!server = VRMethod( "CN_INFO", "AddRecord") ok = VRMethod( "CN_INFO", "SetFieldData", Info.!server, Info.TypeFH, strip(NLVGetMessage(19),'T',':'),Info.ValueFH, Server ) Info.!status = VRMethod( "CN_INFO", "AddRecord") ok = VRMethod( "CN_INFO", "SetFieldData", Info.!status, Info.TypeFH, strip(NLVGetMessage(67),'T',':'),Info.ValueFH, SMBObj.udatamsg ) return /*:VRX SW_INFO_Fini */ SW_INFO_Fini: window = VRInfo( "Window" ) call VRDestroy window drop window return /*:VRX SW_INFO_Init */ SW_INFO_Init: window = VRInfo( "Object" ) if( \VRIsChildOf( window, "Notebook" ) ) then do call VRMethod window, "CenterWindow" call VRSet window, "Visible", 1 call VRMethod window, "Activate" end drop window return /*:VRX SW_LOGIN_Close */ SW_LOGIN_Close: call SW_LOGIN_Fini return /*:VRX SW_LOGIN_Create */ SW_LOGIN_Create: call SW_LOGIN_Init CALL NLVSetText 'DT_USER1', 'Caption', 25 CALL NLVSetText 'DT_PASSWORD1', 'Caption', 26 CALL NLVSetText 'PB_LOGIN_OK', 'Caption', 2 CALL NLVSetText 'PB_LOGIN_CANCEL','Caption', 3 ok = VRSet("EF_USER1","Value",VRGet("EF_USER","Value")) ok = VRSet("EF_PASSWORD1","Value",VRGet("EF_PASSWORD","Value")) return /*:VRX SW_LOGIN_Fini */ SW_LOGIN_Fini: window = VRInfo( "Window" ) call VRDestroy window drop window return /*:VRX SW_LOGIN_Init */ SW_LOGIN_Init: window = VRInfo( "Object" ) if( \VRIsChildOf( window, "Notebook" ) ) then do call VRMethod window, "CenterWindow" call VRSet window, "Visible", 1 call VRMethod window, "Activate" end drop window return /*:VRX SW_LOGIN_KeyPress */ SW_LOGIN_KeyPress: obj = VRInfo( "Object" ) keystr = VRGet( obj, "KeyString" ) /* say keystr */ select when keystr = "{Enter}" then ok = VRMethod( "EF_LoginPassword", "SetFocus" ) when keystr = "{Newline}" then ok = VRMethod( "EF_LoginPassword", "SetFocus" ) when keystr = "{Esc}" then call PB_LOGIN_CANCEL_Click otherwise nop end return /*:VRX SW_MOUNTPOINT_Close */ SW_MOUNTPOINT_Close: call SW_MOUNTPOINT_Fini return /*:VRX SW_MOUNTPOINT_Create */ SW_MOUNTPOINT_Create: call SW_MOUNTPOINT_Init /* NLVGetMessage(14)' ' */ ok = VRSet("SW_MOUNTPOINT","Caption",strip(p_workgroup' \\'p_server'\'p_share,'T','\')) CALL NLVSetText 'DT_MPOINT1', 'Caption', 27 CALL NLVSetText 'PB_NEWMOUNTPOINTOK', 'Caption', 2 CALL NLVSetText 'PB_NEWMOUNTPOINTCANCEL','Caption', 3 CALL NLVSetText 'CB_EAS1', 'Caption', 44 CALL NLVSetText 'CB_READONLY1', 'Caption', 45 CALL NLVSetText 'CB_ALWAYSMP1', 'Caption', 65 ok = VRMethod( "CB_DRIVES", "GetStringList", "freedrives." ) ok = VRMethod( "CB_DRIVES1", "AddStringList", "freedrives." ) ok = VRSet("CB_DRIVES1", "Value", VRGet("CB_Drives","Value")) ok = VRSet("EF_DIRECTORY1", "Value", VRGet("EF_Directory","Value")) ok = VRMethod("EF_DIRECTORY1","AddString",p_share) ok = VRSet("CB_ALWAYSMP1","set",advanced.!alwaysmp) return /*:VRX SW_MOUNTPOINT_Fini */ SW_MOUNTPOINT_Fini: window = VRInfo( "Window" ) call VRDestroy window drop window return /*:VRX SW_MOUNTPOINT_Init */ SW_MOUNTPOINT_Init: window = VRInfo( "Object" ) if( \VRIsChildOf( window, "Notebook" ) ) then do call VRMethod window, "CenterWindow" call VRSet window, "Visible", 1 call VRMethod window, "Activate" end drop window return /*:VRX SW_PROGRESS_Close */ SW_PROGRESS_Close: call SW_PROGRESS_Fini return /*:VRX SW_PROGRESS_Create */ SW_PROGRESS_Create: call SW_PROGRESS_Init CALL NLVSetText 'SW_PROGRESS', 'Caption', 1 CALL NLVSetText 'DT_PROGRESS', 'Caption', 34 CALL NLVSetText 'PB_PROGRESS_ABORT', 'Caption', 3 CALL VRSet "TM_TheCloser","Enabled", 1 return /*:VRX SW_PROGRESS_Fini */ SW_PROGRESS_Fini: window = VRInfo( "Window" ) call VRDestroy window drop window return /*:VRX SW_PROGRESS_Init */ SW_PROGRESS_Init: window = VRInfo( "Object" ) if( \VRIsChildOf( window, "Notebook" ) ) then do call VRMethod window, "CenterWindow" call VRSet window, "Visible", 1 call VRMethod window, "Activate" end drop window return /*:VRX SW_SETTINGS_Close */ SW_SETTINGS_Close: call SW_SETTINGS_Fini return /*:VRX SW_SETTINGS_Create */ SW_SETTINGS_Create: call SW_SETTINGS_Init return /*:VRX SW_SETTINGS_Fini */ SW_SETTINGS_Fini: window = VRInfo( "Window" ) call VRDestroy window drop window return /*:VRX SW_SETTINGS_Init */ SW_SETTINGS_Init: CALL NLVSetText 'SW_SETTINGS', 'Caption', 47 CALL NLVSetText 'GB_GLOBAL', 'Caption', 47 CALL NLVSetText 'CB_DEBUG', 'Caption', 42 CALL NLVSetText 'CB_LOGGING', 'Caption', 46 CALL NLVSetText 'CB_BROWSEIMME', 'Caption', 48 CALL NLVSetText 'CB_BROWSEAUTH', 'Caption', 49 CALL NLVSetText 'CB_SPECIAL', 'Caption', 66 CALL NLVSetText 'CB_SAVEPASSIVE','Caption', 73 CALL NLVSetText 'CB_BROADCAST', 'Caption', 74 CALL NLVSetText 'PB_SETTINGS_OK', 'Caption', 2 CALL NLVSetText 'PB_SETTINGS_CANCEL', 'Caption', 3 CALL NLVSetText 'PB_SETTINGS_HELP', 'Caption', 4 /* CALL VRSet "SW_ADVANCED", "HelpTag", NLVGetMessage(40) */ IF advanced.!logfile \= '' THEN CALL VRSet 'EF_LOGFILE', 'Value', advanced.!logfile IF advanced.!loglevel \= '0' THEN CALL VRSet 'SPIN_LOGLEVEL', 'Value', advanced.!loglevel CALL VRSet 'CB_LOGGING', 'Set', VRFileExists(SysBootDrive()'\ndpsmb.dbg') IF advanced.!browseauth \= '' THEN CALL VRSet 'CB_BROWSEAUTH', 'Set', advanced.!browseauth IF advanced.!browseimme \= '' THEN CALL VRSet 'CB_BROWSEimme', 'Set', advanced.!browseimme IF advanced.!debug \= '' THEN CALL VRSet 'CB_debug', 'Set', advanced.!debug IF advanced.!special \= '' THEN CALL VRSet 'CB_SPECIAL', 'Set', advanced.!special IF advanced.!savepassive \= '' THEN CALL VRSet 'CB_SAVEPASSIVE', 'Set', advanced.!savepassive IF advanced.!broadcast \= '' THEN CALL VRSet 'CB_BROADCAST', 'Set', advanced.!broadcast window = VRInfo( "Object" ) if( \VRIsChildOf( window, "Notebook" ) ) then do call VRMethod window, "CenterWindow" call VRSet window, "Visible", 1 call VRMethod window, "Activate" end drop window return /*:VRX TM_AutoClose_Trigger */ TM_AutoClose_Trigger: call PB_CLOSE_Click return /*:VRX TM_RefreshCurrentDisplay_Trigger */ TM_RefreshCurrentDisplay_Trigger: CALL REFRESH return /*:VRX TM_RefreshTreeDisplay_Trigger */ TM_RefreshTreeDisplay_Trigger: ShowHidden = advanced.!special BroadCast = advanced.!broadcast select when RefreshMode = "TREE" then do call _RefreshTreeDisplay if VRget("Menu_View_SmbTree", "Checked") then do if smbtree.!workgroup <> 'SMBTREE.!WORKGROUP' then do ok = VRset("Menu_Selected_Connect", "Visible", VRMethod("CN_SmbTree", "ValidateRecord", smbtree.!workgroup ) ) end end end when RefreshMode = "SHARE" then do call _AddSharesDisplay end otherwise say "RefreshMode = "RefreshMode end call _DialogPopulate return /*:VRX TM_TheCloser_Trigger */ TM_TheCloser_Trigger: call SW_PROGRESS_Close return /*:VRX TM_Throbber_Trigger */ TM_Throbber_Trigger: pIdx = VRGet("Pict_Throbber","PicturePath") parse var pIdx '#' pidx pidx = pidx + 1 if pidx = 36 then pidx = 11 ok = VRSet("Pict_Throbber","PicturePath","#"pidx) return