* Program..: PrinterSetup.prg * Author...: Jeremy Suiter * Date.....: 25/11/2004 * * Notice...: Copyright (c) 2004, Jeremy Suiter, All Rights Reserved * Notes....: Visual DbEditor printer setup functions #Include "Gra.ch" #Include "Xbp.ch" #Include "Common.ch" #Include "Appevent.ch" #Include "Font.ch" #Include "DbEditor.ch" #Include "Resources.ch" ********************************* CLASS PrinterSetup FROM XbpDialog ********************************* * Printer Setup dialog EXPORTED: VAR editControls VAR PrinterList * Contained control elements VAR Static1 VAR ListBox1 VAR PushButton1 VAR PushButton2 METHOD init METHOD create METHOD printerlist METHOD editprinter ENDCLASS ************************ METHOD PrinterSetup:init( oParent, oOwner, aPos, aSize, aPP, lVisible ) ************************ * Initialize dialog DEFAULT aPP TO {} AAdd ( aPP, { XBP_PP_COMPOUNDNAME, "8.Helv" } ) ::XbpDialog:init( oParent, oOwner, aPos, aSize, aPP, lVisible ) ::XbpDialog:taskList := .T. ::XbpDialog:title := "Printer Setup" ::editControls := {} ::Static1 := XbpStatic():new( ::drawingArea, , {12,12}, {300,180} ) ::Static1:caption := "" ::Static1:clipSiblings := .T. ::Static1:type := XBPSTATIC_TYPE_GROUPBOX ::ListBox1 := XbpListBox():new( ::Static1, , {12,12}, {180,144}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) ::ListBox1:tabStop := .T. ::ListBox1:horizScroll:=.F. ::ListBox1:vertScroll:=.T. ::PushButton1 := XbpPushButton():new( ::Static1, , {216,48}, {72,24}, { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE }, { XBP_PP_FGCLR, -58 } } ) ::PushButton1:caption := "Properties" ::PushButton1:tabStop := .T. ::PushButton1:activate := {|| ::editprinter() } ::PushButton2 := XbpPushButton():new( ::Static1, , {216,12}, {72,24}, { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE }, { XBP_PP_FGCLR, -58 } } ) ::PushButton2:caption := GEN_CLOSE ::PushButton2:tabStop := .T. ::PushButton2:activate := {|| PostAppEvent(xbeP_Close+1000) } RETURN self ************************** METHOD PrinterSetup:create( oParent, oOwner, aPos, aSize, aPP, lVisible ) ************************** * create dialog ::XbpDialog:create( oParent, oOwner, aPos, aSize, aPP, lVisible ) ::Static1:create() ::ListBox1:create() ::PushButton1:create() ::PushButton2:create() RETURN self ******************************* METHOD PrinterSetup:printerlist() ******************************* * get list of printers Local oPrinter, aPrinters,x oPrinter:=XbpPrinter():new():create() aPrinters:=oPrinter:list() If !aPrinters==Nil For x:=1 To Len(aPrinters) ::ListBox1:addItem(aPrinters[x]) Next ::ListBox1:setData({1}) EndIf oPrinter:destroy() Return Self ******************************* METHOD PrinterSetup:editprinter() ******************************* * edit printer properties Local oPrinter, aPrinters, aSelectPrn aSelectPrn:=::ListBox1:getData() If !aSelectPrn[1]==Nil oPrinter:=XbpPrinter():new() aPrinters:=oPrinter:list() oPrinter:create(aPrinters[aSelectPrn[1]]) oPrinter:setupDialog() oPrinter:destroy() EndIf Return Self ***************** Func SetupPrinter() ***************** * call printer setup dialog Local nEvent, mp1:=Nil, mp2:=Nil, aPos, aSize, oFocus:=SetAppFocus(), oDlg, oXbp:=Nil Begin Sequence aSize:={330,225} aPos:=CenterPos(aSize,AppDesktop():currentSize()) oDlg:=PrinterSetup():new(AppDesktop(), SetAppWindow(), aPos, aSize, , .F.) oDlg:icon:=ICON_MAIN oDlg:taskList:=.F. oDlg:border:=XBPDLG_RAISEDBORDERTHIN_FIXED oDlg:close:={|mp1,mp2,obj| PostAppEvent(xbeP_Close+1000) } oDlg:create() oDlg:setModalState(XBP_DISP_APPMODAL) oDlg:keyBoard:={| nKeyCode, uNIL, self | Iif(nKeyCode==xbeK_ESC,PostAppEvent(xbeP_Close+1000),Nil) } oDlg:printerlist() oDlg:show() SetAppFocus(oDlg) nEvent:=xbe_None Do While nEvent<>xbeP_Close+1000 nEvent:=AppEvent(@mp1, @mp2, @oXbp) oXbp:handleEvent(nEvent, mp1, mp2) if nEvent == xbeP_Keyboard .and.; mp1 == xbeK_ESC exit endif EndDo oDlg:destroy() SetAppFocus(oFocus) End Return Nil