Ignore:
Timestamp:
May 13, 2013, 6:06:52 PM (12 years ago)
Author:
Alex Taylor
Message:

Support installing a new driver.model directly. Keyboard navigation improved. Some bug fixes. (Now requires VROBJEX 1.1.2 or later.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/printer/manager/PRINTOOL.VRX

    r38 r39  
    156156RETURN
    157157
     158/*:VRX         CN_DEVICES_KeyPress
     159*/
     160CN_DEVICES_KeyPress:
     161    IF VRGet('CN_DEVICES', 'KeyString') == '{Backtab}' THEN
     162        CALL VRMethod 'TDL_MAIN', 'SetFocus'
     163return
     164
    158165/*:VRX         CN_PORTS_ContextMenu
    159166*/
     
    170177
    171178RETURN
     179
     180/*:VRX         CN_PORTS_KeyPress
     181*/
     182CN_PORTS_KeyPress:
     183    IF VRGet('CN_PORTS', 'KeyString') == '{Backtab}' THEN
     184        CALL VRMethod 'TDL_MAIN', 'SetFocus'
     185return
    172186
    173187/*:VRX         CN_PRINTERPAKS_ContextMenu
     
    210224RETURN
    211225
     226/*:VRX         CN_PRINTERS_KeyPress
     227*/
     228CN_PRINTERS_KeyPress:
     229    IF VRGet('CN_PRINTERS', 'KeyString') == '{Backtab}' THEN
     230        CALL VRMethod 'TDL_MAIN', 'SetFocus'
     231RETURN
     232
    212233/*:VRX         CupsDeletePrinter
    213234*/
     
    248269RETURN rc
    249270
     271/*:VRX         DDCB_DEVICE_3RDPARTY_Click
     272*/
     273DDCB_DEVICE_3RDPARTY_Click: PROCEDURE EXPOSE globals. shipped.
     274    new_path = TRANSLATE( STRIP( VRGet('DDCB_DEVICE_3RDPARTY', 'SelectedString')))
     275    IF new_path == '' THEN RETURN
     276
     277    old_path = VRGet('DDCB_DEVICE_3RDPARTY', 'UserData')
     278    IF old_path == new_path THEN RETURN
     279
     280    CALL SetDriverList new_path
     281RETURN
     282
     283/*:VRX         DDCB_DEVICE_3RDPARTY_Verify
     284*/
     285DDCB_DEVICE_3RDPARTY_Verify: PROCEDURE EXPOSE globals. shipped.
     286    old_path = VRGet('DDCB_DEVICE_3RDPARTY', 'UserData')
     287    new_path = TRANSLATE( STRIP( VRGet('DDCB_DEVICE_3RDPARTY', 'Value')))
     288    IF new_path == '' THEN DO
     289        IF old_path <> '' THEN CALL VRSet 'DDCB_DEVICE_3RDPARTY', 'Value', old_path
     290        RETURN
     291    END
     292
     293    new_path = VRExpandFileName( new_path )
     294    IF new_path == '' THEN DO
     295        IF old_path <> '' THEN CALL VRSet 'DDCB_DEVICE_3RDPARTY', 'Value', old_path
     296        RETURN
     297    END
     298
     299    IF old_path == new_path THEN RETURN
     300
     301    CALL SetDriverList new_path
     302RETURN
     303
    250304/*:VRX         DriverAdd
    251305*/
    252306DriverAdd: PROCEDURE EXPOSE globals.
    253 
     307    updated = 0
     308    CALL VRLoadSecondary 'SW_DEVICE_ADD', 'W'
     309    IF updated == 1 THEN
     310        CALL RefreshDevices
    254311RETURN
    255312
     
    415472
    416473RETURN _count
     474
     475/*:VRX         GetShippedDrivers
     476*/
     477GetShippedDrivers: PROCEDURE EXPOSE globals. shipped.
     478
     479    count = 0
     480    CALL LINEIN globals.!prdesc, 1, 0
     481    DO WHILE LINES( globals.!prdesc )
     482        _next = LINEIN( globals.!prdesc )
     483        PARSE VAR _next _desc':' _rest
     484        _ppak = SUBSTR( _rest, LASTPOS('(', _rest ))
     485        PARSE VAR _ppak '('_drvr')' .
     486        count = count + 1
     487        shipped.count = ';'_desc';#2;;;NAME;'_desc';DRIVER;'_drvr';'
     488    END
     489    CALL STREAM globals.!prdesc, 'C', 'CLOSE'
     490    shipped.0 = count
     491    CALL VRSortStem 'shipped.'
     492
     493RETURN count
    417494
    418495/*:VRX         Halt
     
    658735        DO WHILE LINES( globals.!prdesc )
    659736            _next = LINEIN( globals.!prdesc )
    660             PARSE UPPER VAR _next WITH . ':' . '('_prdrv')' .
     737            PARSE UPPER VAR _next . ':' _rest
     738            _tail = SUBSTR( _rest, LASTPOS('(', _rest ))
     739            PARSE VAR _tail '('_prdrv')' .
    661740            IF _prdrv == driver'.DRV' THEN ITERATE
    662741            count = count + 1
     
    738817*/
    739818Init:
     819    /* Hide the VX-REXX console window
     820     */
     821    CALL VRSet 'Console', 'WindowListTitle', ''
    740822
    741823    CALL RxFuncAdd 'SysLoadFuncs',     'REXXUTIL', 'SysLoadFuncs'
     
    773855        CALL VRMethod 'Application', 'PostQueue', 0, 1, 'CALL PB_PRINTER_ADD_Click'
    774856    END
    775     ELSE
     857    ELSE DO
    776858        CALL VRSet window, "Visible", 1
     859        CALL VRMethod 'TDL_MAIN', 'SetFocus'
     860    END
    777861    drop window
    778862
     
    804888LoadSettings: PROCEDURE EXPOSE globals.
    805889
    806     globals.!version = '0.31'
     890    globals.!version = '0.41'
    807891    globals.!copyright = '2013'
    808892
     
    11711255RETURN
    11721256
     1257/*:VRX         PB_DEVICE_CANCEL_Click
     1258*/
     1259PB_DEVICE_CANCEL_Click:
     1260    CALL SW_DEVICE_ADD_Close
     1261RETURN
     1262
     1263/*:VRX         PB_DEVICE_INSTALL_Click
     1264*/
     1265PB_DEVICE_INSTALL_Click: PROCEDURE EXPOSE globals. updated
     1266    updated = 1
     1267
     1268    ok = VRMethod('CN_DEVICE_LIST', 'GetRecordList', 'Selected', 'recs.')
     1269    IF ok == 0 THEN RETURN
     1270    IF recs.0 == 0 THEN RETURN
     1271    selected = recs.1
     1272
     1273    dev_name = VRMethod('CN_DEVICE_LIST', 'GetFieldData', selected, 'NAME')
     1274    dev_driver = VRMethod('CN_DEVICE_LIST', 'GetFieldData', selected, 'DRIVER')
     1275    driver_short = TRANSLATE( VRParseFileName( dev_driver, 'N'))
     1276    IF dev_name == '' | dev_driver == '' | driver_short == '' THEN RETURN
     1277
     1278    /* Shipped drivers don't include the FQ path in dev_driver so we must
     1279     * resolve it first.
     1280     */
     1281    IF VRGet('RB_DEVICE_SHIPPED', 'Set') == 1 THEN
     1282        dev_driver = GetDriverSource( driver_short )
     1283    IF dev_driver == '' THEN RETURN
     1284
     1285    ok = InstallPrintDriver( driver_short, dev_driver, dev_name )
     1286
     1287    IF ok <> 0 THEN DO
     1288        CALL VRMessage VRWindow(), NLSGetMessage( 168, driver_short'.'dev_name ), NLSGetMessage( 13 ), 'E'
     1289    END
     1290    CALL SW_DEVICE_ADD_Close
     1291
     1292RETURN
     1293
     1294/*:VRX         PB_DEVICE_OTHER_Click
     1295*/
     1296PB_DEVICE_OTHER_Click: PROCEDURE EXPOSE globals. shipped.
     1297
     1298    old_path = VRGet('DDCB_DEVICE_3RDPARTY', 'UserData')
     1299    new_path = VRXDirectoryDialog( VRWindow(), old_path, NLSGetMessage( 189 ))
     1300    IF new_path == '' THEN RETURN
     1301    IF old_path == TRANSLATE( new_path ) THEN RETURN
     1302
     1303    CALL VRSet 'DDCB_DEVICE_3RDPARTY', 'Value', new_path
     1304    CALL SetDriverList new_path
     1305
     1306RETURN
     1307
     1308/*:VRX         PB_DEVICE_REFRESH_Click
     1309*/
     1310PB_DEVICE_REFRESH_Click: PROCEDURE EXPOSE globals. shipped.
     1311    CALL SetDriverList
     1312return
     1313
    11731314/*:VRX         PB_DEVICE_REMOVE_Click
    11741315*/
     
    11761317    CALL DriverDelete
    11771318RETURN
     1319
     1320/*:VRX         PB_DEVICE_REMOVE_KeyPress
     1321*/
     1322PB_DEVICE_REMOVE_KeyPress:
     1323    IF VRGet('PB_DEVICE_REMOVE', 'KeyString') == '{Tab}' THEN
     1324        CALL VRMethod 'TDL_MAIN', 'SetFocus'
     1325return
    11781326
    11791327/*:VRX         PB_IMPORTCANCEL_Click
     
    12821430PB_PORT_DELETE_Click:
    12831431    CALL PortDelete
     1432return
     1433
     1434/*:VRX         PB_PORT_EDIT_Click
     1435*/
     1436PB_PORT_EDIT_Click:
     1437    CALL PortProperties
     1438return
     1439
     1440/*:VRX         PB_PORT_EDIT_KeyPress
     1441*/
     1442PB_PORT_EDIT_KeyPress:
     1443    IF VRGet('PB_PORT_EDIT', 'KeyString') == '{Tab}' THEN
     1444        CALL VRMethod 'TDL_MAIN', 'SetFocus'
    12841445return
    12851446
     
    14291590PB_PRINTER_DEL_Click:
    14301591    CALL PrinterDelete
     1592return
     1593
     1594/*:VRX         PB_PRINTER_EDIT_Click
     1595*/
     1596PB_PRINTER_EDIT_Click:
     1597    CALL PrinterProperties
     1598RETURN
     1599
     1600/*:VRX         PB_PRINTER_EDIT_KeyPress
     1601*/
     1602PB_PRINTER_EDIT_KeyPress:
     1603    IF VRGet('PB_PRINTER_EDIT', 'KeyString') == '{Tab}' THEN
     1604        CALL VRMethod 'TDL_MAIN', 'SetFocus'
    14311605return
    14321606
     
    17171891RETURN
    17181892
     1893/*:VRX         RB_DEVICE_3RDPARTY_Click
     1894*/
     1895RB_DEVICE_3RDPARTY_Click: PROCEDURE EXPOSE globals. shipped.
     1896    CALL VRSet 'DDCB_DEVICE_3RDPARTY', 'Enabled', 1
     1897    CALL VRSet 'PB_DEVICE_OTHER',      'Enabled', 1
     1898    CALL VRSet 'PB_DEVICE_REFRESH',    'Enabled', 1
     1899    CALL SetDriverList
     1900RETURN
     1901
     1902/*:VRX         RB_DEVICE_SHIPPED_Click
     1903*/
     1904RB_DEVICE_SHIPPED_Click: PROCEDURE EXPOSE globals. shipped.
     1905    CALL VRSet 'DDCB_DEVICE_3RDPARTY', 'Enabled', 0
     1906    CALL VRSet 'PB_DEVICE_OTHER',      'Enabled', 0
     1907    CALL VRSet 'PB_DEVICE_REFRESH',    'Enabled', 0
     1908    CALL SetDriverList
     1909RETURN
     1910
     1911
    17191912/*:VRX         RefreshDevices
    17201913*/
     
    18322025RETURN
    18332026
     2027/*:VRX         SetDriverList
     2028*/
     2029SetDriverList: PROCEDURE EXPOSE globals. shipped.
     2030    ARG driver_path
     2031
     2032    CALL VRSet VRWindow(), 'Pointer', 'WAIT'
     2033    CALL VRMethod 'CN_DEVICE_LIST', 'RemoveRecord', 'All'
     2034
     2035    IF VRGet('RB_DEVICE_SHIPPED', 'Set') == 1 THEN DO
     2036        CALL VRMethod 'CN_DEVICE_LIST', 'AddRecordList',,, 'shipped.'
     2037    END
     2038    ELSE DO
     2039        IF driver_path == '' THEN
     2040            driver_path = TRANSLATE( STRIP( VRGet('DDCB_DEVICE_3RDPARTY', 'Value')))
     2041        IF driver_path <> '' THEN DO
     2042            drivers.0 = 0
     2043            _total = 0
     2044            CALL SysFileTree driver_path'\*.DRV', 'drivers.', 'FO'
     2045            DO i = 1 TO drivers.0
     2046                list.0 = 0
     2047                IF SysGetEA( drivers.i, '.EXPAND', 'eaval') == 0 THEN DO
     2048                    PARSE VAR eaval 3 ealen 5 models
     2049                    offs = 1
     2050                    datalen = C2D( REVERSE( ealen ))
     2051                    DO WHILE offs <= datalen
     2052                        start = SUBSTR( models, offs )
     2053                        inc = POS('00'x, start )
     2054                        IF inc > 1 THEN DO
     2055                            current_name = STRIP( SUBSTR( start, 1, inc-1 ))
     2056                            _total = _total + 1
     2057                            list._total = ';'_desc';#2;;;NAME;'current_name';DRIVER;'|| TRANSLATE( drivers.i ) ||';'
     2058                        END
     2059                        offs = offs + inc
     2060                    END
     2061                END
     2062            END
     2063
     2064            list.0 = _total
     2065            CALL VRSortStem 'list.'
     2066            CALL VRMethod 'CN_DEVICE_LIST', 'AddRecordList',,, 'list.'
     2067            CALL VRSet 'DDCB_DEVICE_3RDPARTY', 'UserData', driver_path
     2068        END
     2069    END
     2070
     2071    CALL VRSet VRWindow(), 'Pointer', '<default>'
     2072
     2073RETURN
     2074
    18342075/*:VRX         SetLanguage
    18352076*/
     
    19452186/*:VRX         SW_ABOUT_Init
    19462187*/
    1947 SW_ABOUT_Init:
     2188SW_ABOUT_Init: PROCEDURE EXPOSE globals.
    19482189
    19492190    IF globals.!is_ecs == 1 THEN
     
    19842225return
    19852226
     2227/*:VRX         SW_DEVICE_ADD_Close
     2228*/
     2229SW_DEVICE_ADD_Close:
     2230    call SW_DEVICE_ADD_Fini
     2231return
     2232
     2233/*:VRX         SW_DEVICE_ADD_Create
     2234*/
     2235SW_DEVICE_ADD_Create:
     2236    call SW_DEVICE_ADD_Init
     2237return
     2238
     2239/*:VRX         SW_DEVICE_ADD_Fini
     2240*/
     2241SW_DEVICE_ADD_Fini:
     2242    window = VRInfo( "Window" )
     2243    call VRDestroy window
     2244    drop window
     2245return
     2246/*:VRX         SW_DEVICE_ADD_Init
     2247*/
     2248SW_DEVICE_ADD_Init: PROCEDURE EXPOSE globals. shipped.
     2249
     2250    fld_name   = VRMethod('CN_DEVICE_LIST', 'AddField', 'String', NLSGetMessage( 265 ), 'NAME')
     2251    fld_driver = VRMethod('CN_DEVICE_LIST', 'AddField', 'String', NLSGetMessage( 266 ), 'DRIVER')
     2252
     2253    IF globals.!is_ecs == 1 THEN
     2254        _platform = 'eComStation'
     2255    ELSE
     2256        _platform = 'OS/2'
     2257    CALL NLSSetText 'SW_DEVICE_ADD',      'Caption', 260
     2258    CALL NLSSetText 'RB_DEVICE_SHIPPED',  'Caption', 261, _platform
     2259    CALL NLSSetText 'RB_DEVICE_3RDPARTY', 'Caption', 262, _platform
     2260    CALL NLSSetText 'PB_DEVICE_OTHER',    'Caption', 188
     2261    CALL NLSSetText 'PB_DEVICE_REFRESH',  'Caption', 63
     2262    CALL NLSSetText 'PB_DEVICE_INSTALL',  'Caption', 8
     2263    CALL NLSSetText 'PB_DEVICE_CANCEL',   'Caption', 3
     2264
     2265    window = VRInfo( "Object" )
     2266    CALL VRSet window, 'Pointer', 'WAIT'
     2267
     2268    extras_num = 0
     2269    PARSE UPPER VALUE VRGetIni('PrinterManager', 'LastDriverPath', 'USER') WITH last_path '00'x .
     2270    IF last_path <> '' THEN DO
     2271        extras_num = extras_num + 1
     2272        extras_path.extras_num = last_path
     2273    END
     2274    PARSE UPPER VALUE VRGetIni('PrinterManager', 'ThirdParty', 'USER') WITH known_3p '00'x .
     2275    IF known_3p == '' THEN known_3p = 'ECUPS ECUPS-HP GUTENPRT PSPRINT'
     2276    DO i = 1 TO WORDS( known_3p )
     2277        _basename = WORD( known_3p, i )
     2278        _ppdriver = _basename'.DRV'
     2279        _ppini = VRGetIni('PM_INSTALL', _basename'_DIR', 'USER')
     2280        IF _ppini == '' THEN ITERATE
     2281        PARSE VAR _ppini _pppath '00'x .
     2282        IF VRFileExists( _pppath'\'_ppdriver ) THEN DO
     2283            extras_num = extras_num + 1
     2284            extras_name.extras_num = _ppdriver
     2285            extras_path.extras_num = _pppath
     2286        END
     2287    END
     2288    extras_name.0 = extras_num
     2289    extras_path.0 = extras_num
     2290    CALL VRMethod 'DDCB_DEVICE_3RDPARTY', 'AddStringList', 'extras_path.'
     2291    IF extras_num > 0 THEN CALL VRSet 'DDCB_DEVICE_3RDPARTY', 'Selected', 1
     2292
     2293    if( \VRIsChildOf( window, "Notebook" ) ) then do
     2294        call VRMethod window, "CenterWindow"
     2295        call VRSet window, "Visible", 1
     2296        call VRMethod window, "Activate"
     2297    end
     2298
     2299    IF GetShippedDrivers() > 0 THEN DO
     2300/*        CALL VRMethod 'CN_DEVICE_LIST', 'AddRecordList',,, 'shipped.' */
     2301    END
     2302
     2303    CALL VRSet window, 'Pointer', '<default>'
     2304    drop window
     2305
     2306RETURN
     2307
    19862308/*:VRX         SW_DEVICES_Close
    19872309*/
     
    22682590
    22692591    CALL NLSSetText 'CN_PORTS',       'Caption', 105
    2270     CALL NLSSetText 'PB_PORT_ADD',    'Caption', 5
    2271     CALL NLSSetText 'PB_PORT_DELETE', 'Caption', 6
     2592    CALL NLSSetText 'PB_PORT_ADD',    'Caption', 8
     2593    CALL NLSSetText 'PB_PORT_DELETE', 'Caption', 9
     2594    CALL NLSSetText 'PB_PORT_EDIT',   'Caption', 10
    22722595
    22732596    CALL RefreshPorts
     
    23632686
    23642687    CALL NLSSetText 'CN_PRINTERS',     'Caption', 103
    2365     CALL NLSSetText 'PB_PRINTER_ADD',  'Caption', 5
    2366     CALL NLSSetText 'PB_PRINTER_DEL',  'Caption', 6
     2688    CALL NLSSetText 'PB_PRINTER_ADD',  'Caption', 8
     2689    CALL NLSSetText 'PB_PRINTER_DEL',  'Caption', 9
    23672690    CALL NLSSetText 'PB_PRINTER_OPEN', 'Caption', 7
     2691    CALL NLSSetText 'PB_PRINTER_EDIT', 'Caption', 10
    23682692
    23692693    globals.!hcfPrinters.!icon   = VRMethod( "CN_PRINTERS", "AddField", "Icon", "" )
     
    24312755    ELSE DO
    24322756        call VRSet 'WN_MAIN', "Visible", 1
    2433         IF globals.!create_mode == '' THEN
     2757        IF globals.!create_mode == '' THEN DO
    24342758            call VRMethod 'WN_MAIN', "Activate"
     2759            CALL VRMethod 'TDL_MAIN', 'SetFocus'
     2760        END
    24352761    END
    24362762RETURN
     
    24972823RETURN
    24982824
    2499 /*:VRX         TM_REFRESH_Trigger
    2500 */
    2501 TM_REFRESH_Trigger: PROCEDURE EXPOSE globals.
    2502     CALL RefreshPrinters
    2503     CALL RefreshPorts
    2504     CALL RefreshDevices
    2505 RETURN
    2506 
    25072825/*:VRX         WN_MAIN_Close
    25082826*/
Note: See TracChangeset for help on using the changeset viewer.