Changeset 192 for trunk/Lucide


Ignore:
Timestamp:
Jan 27, 2007, 5:46:35 PM (15 years ago)
Author:
Eugene Romanenko
Message:

printing: set number of copies into job properties

Location:
trunk/Lucide/SOURCE/gui
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/SOURCE/gui/makefile

    r186 r192  
    22
    33TEST=0
    4 VERSION=1.0 RC1
     4VERSION=1.0
    55
    66!if $(TEST)==1
  • trunk/Lucide/SOURCE/gui/printDlg.cpp

    r183 r192  
    108108
    109109    WinCheckButton( hwnd, isPortraitOrientation() ? IDC_PORTRAIT : IDC_LANDSCAPE, TRUE );
     110    WinSendDlgItemMsg( hwnd, IDC_COPIES, SPBM_SETCURRENTVALUE,
     111                       MPFROMLONG( queryCopies() ), MPVOID );
    110112
    111113    applyForm( hwnd );
     
    191193
    192194    WinCheckButton( hwnd, isPortraitOrientation() ? IDC_PORTRAIT : IDC_LANDSCAPE, TRUE );
     195    WinSendDlgItemMsg( hwnd, IDC_COPIES, SPBM_SETCURRENTVALUE,
     196                       MPFROMLONG( queryCopies() ), MPVOID );
     197
    193198    applyForm( hwnd );
    194199}
     
    242247#define DJP_NONE                0L
    243248#define DJP_SJ_ORIENTATION      1L
     249#define DJP_SJ_COPIES           16L
    244250
    245251#define DJP_ORI_PORTRAIT        1L
     
    296302}
    297303
    298 
    299304void PrintDlg::setPortraitOrientation( bool portrait, HWND hwnd )
    300305{
     
    328333}
    329334
     335int PrintDlg::queryCopies()
     336{
     337    int rVal = 1;
     338
     339    HDC hdcPrinterInfo = getInfoDC();
     340    if ( hdcPrinterInfo != DEV_ERROR )
     341    {
     342        DJP_ITEM djp[ 2 ] = { { 0 } };
     343
     344        // Get number of copies from Job Properties
     345        djp[0].cb = sizeof( DJP_ITEM );
     346        djp[0].ulProperty = DJP_SJ_COPIES;
     347        djp[0].lType = DJP_CURRENT;
     348        djp[0].ulNumReturned = 1;
     349        djp[0].ulValue = 1;
     350
     351        djp[1].cb = sizeof( DJP_ITEM );
     352        djp[1].ulProperty = 0;
     353        djp[1].lType = DJP_NONE;
     354        djp[1].ulNumReturned = 1;
     355        djp[1].ulValue = 0;
     356
     357        LONG outSz = psetup->QueueInfo.pDriverData->cb;
     358        LONG rc = DevEscape( hdcPrinterInfo, DEVESC_QUERYJOBPROPERTIES,
     359                             sizeof( DJP_ITEM ) * 2, (PCHAR)djp,
     360                             &outSz, (PCHAR)psetup->QueueInfo.pDriverData );
     361
     362        if ( ( rc == DEV_OK ) || ( rc == DEV_WARNING ) ) {
     363            rVal = djp[0].ulValue;
     364        }
     365
     366        DevCloseDC( hdcPrinterInfo );
     367    }
     368
     369    return rVal;
     370}
     371
     372void PrintDlg::setCopies( int copies )
     373{
     374    HDC hdcPrinterInfo = getInfoDC();
     375    if ( hdcPrinterInfo != DEV_ERROR )
     376    {
     377        DJP_ITEM djp[ 2 ] = { { 0 } };
     378
     379        // Set number of copies
     380        djp[0].cb = sizeof( DJP_ITEM );
     381        djp[0].ulProperty = DJP_SJ_COPIES;
     382        djp[0].lType = DJP_CURRENT;
     383        djp[0].ulNumReturned = 1;
     384        djp[0].ulValue = copies;
     385
     386        djp[1].cb = sizeof( DJP_ITEM );
     387        djp[1].ulProperty = 0;
     388        djp[1].lType = DJP_NONE;
     389        djp[1].ulNumReturned = 1;
     390        djp[1].ulValue = 0;
     391
     392        LONG outSz = psetup->QueueInfo.pDriverData->cb;
     393        DevEscape( hdcPrinterInfo, DEVESC_SETJOBPROPERTIES,
     394                   sizeof( DJP_ITEM ) * 2, (PCHAR)djp,
     395                   &outSz, (PCHAR)psetup->QueueInfo.pDriverData );
     396
     397        DevCloseDC( hdcPrinterInfo );
     398    }
     399}
    330400
    331401bool PrintDlg::queryCurrentForm()
     
    469539                               MPFROMLONG( pages ), MPVOID );
    470540
     541            // Enum printer queues
     542            _this->enumQueues( hwnd );
     543
    471544            // Number of copies
    472545            WinSendDlgItemMsg( hwnd, IDC_COPIES, SPBM_SETLIMITS,
     
    474547            WinSendDlgItemMsg( hwnd, IDC_COPIES, SPBM_SETCURRENTVALUE,
    475548                               MPFROMLONG( 1 ), MPVOID );
    476 
    477             // Enum printer queues
    478             _this->enumQueues( hwnd );
    479549
    480550            USHORT sEntry;
     
    556626                break;
    557627
     628                case IDC_COPIES:
     629                {
     630                    if ( SHORT2FROMMP(mp1) == SPBN_CHANGE )
     631                    {
     632                        LONG cp = 0;
     633                        WinSendDlgItemMsg( hwnd, IDC_COPIES, SPBM_QUERYVALUE,
     634                                           MPFROMP( &cp ), MPFROM2SHORT( 0, SPBQ_UPDATEIFVALID ) );
     635                        _this->setCopies( cp );
     636                    }
     637                }
     638                break;
    558639            }
    559640        }
  • trunk/Lucide/SOURCE/gui/printDlg.h

    r167 r192  
    6060        void setPortraitOrientation( bool portrait, HWND hwnd );
    6161        bool queryCurrentForm();
     62        int queryCopies();
     63        void setCopies( int copies );
    6264        void applyForm( HWND hwnd );
    6365        static MRESULT EXPENTRY printDlgProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 );
Note: See TracChangeset for help on using the changeset viewer.