//
//     Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
//     may also apply


//                 Generated by preSip
//            module tdeprint  version KDE 3.5.3


// This software is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this library; see the file COPYING.
// If not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.


class KMManager : TQObject
{
%TypeHeaderCode
#include <kmmanager.h>
%End


public:

    enum PrinterOperations
    {
        PrinterEnabling, 
        PrinterCreation, 
        PrinterDefault, 
        PrinterTesting, 
        PrinterConfigure, 
        PrinterRemoval, 
        PrinterAll
    };


    enum ServerOperations
    {
        ServerRestarting, 
        ServerConfigure, 
        ServerAll
    };

                         KMManager (TQObject* /TransferThis/ = 0, const char* = 0);
    static KMManager*    self ();
    TQString              errorMsg () const;
    void                 setErrorMsg (const TQString&);
    bool                 hasManagement () const;
    virtual bool         createPrinter (KMPrinter*);
    virtual bool         removePrinter (KMPrinter*);
    virtual bool         enablePrinter (KMPrinter*, bool);
    virtual bool         startPrinter (KMPrinter*, bool);
    virtual bool         completePrinter (KMPrinter*);
    virtual bool         completePrinterShort (KMPrinter*);
    virtual bool         setDefaultPrinter (KMPrinter*);
    virtual bool         testPrinter (KMPrinter*);
    bool                 upPrinter (KMPrinter*, bool);
    bool                 modifyPrinter (KMPrinter*, KMPrinter*);
    bool                 removePrinter (const TQString&);
    bool                 enablePrinter (const TQString&, bool);
    bool                 startPrinter (const TQString&, bool);
    bool                 completePrinter (const TQString&);
    bool                 setDefaultPrinter (const TQString&);
    int                  printerOperationMask () const;
    int                  addPrinterWizard (TQWidget* /Transfer/ = 0);
    bool                 createSpecialPrinter (KMPrinter*);
    bool                 removeSpecialPrinter (KMPrinter*);
    KMPrinter*           findPrinter (const TQString&);
    TQPtrList<KMPrinter>* printerList (bool = 1);
    TQPtrList<KMPrinter>* printerListComplete (bool = 1);
    KMPrinter*           defaultPrinter ();
    void                 enableFilter (bool);
    bool                 isFilterEnabled () const;
    virtual TQString      driverDbCreationProgram ();
    virtual TQString      driverDirectory ();
//ig     virtual DrMain*      loadPrinterDriver (KMPrinter*, bool = 0);
//ig     virtual DrMain*      loadDbDriver (KMDBEntry*);
//ig     virtual DrMain*      loadFileDriver (const TQString&);
//ig     DrMain*              loadDriver (KMPrinter*, bool = 0);
//ig     virtual bool         savePrinterDriver (KMPrinter*, DrMain*);
//ig     virtual bool         validateDbDriver (KMDBEntry*);
    bool                 invokeOptionsDialog (TQWidget* /Transfer/ = 0);

%If ( KDE_3_1_0 -  )
    virtual TQString      stateInformation ();
%End

    int                  serverOperationMask () const;
    virtual bool         restartServer ();
    virtual bool         configureServer (TQWidget* /Transfer/ = 0);
    virtual TQStringList  detectLocalPrinters ();
    virtual void         createPluginActions (TDEActionCollection*);
    virtual void         validatePluginActions (TDEActionCollection*, KMPrinter*);

%If ( KDE_3_1_0 -  )
    void                 checkUpdatePossible ();
%End


signals:

%If ( KDE_3_1_0 -  )
    void                 updatePossible (bool);
%End


protected:
    virtual void         listPrinters ();
    void                 addPrinter (KMPrinter*);
    void                 setHardDefault (KMPrinter*);
    void                 setSoftDefault (KMPrinter*);
    KMPrinter*           softDefault () const;
    KMPrinter*           hardDefault () const;
    bool                 uncompressFile (const TQString&, TQString&);
    bool                 notImplemented ();
    void                 setHasManagement (bool);
    void                 setPrinterOperationMask (int);
    void                 setServerOperationMask (int);
    TQString              testPage ();
    void                 discardAllPrinters (bool);

%If ( KDE_3_1_0 -  )
    void                 setUpdatePossible (bool);
    virtual void         checkUpdatePossibleInternal ();
%End


protected:

};  // class KMManager



%MappedType TQPtrList<KMPrinter>
//converts a Python list of KMPrinter
{
%TypeHeaderCode
#include <tqptrlist.h>
#include <kmmanager.h>
#include <kmprinter.h>
%End

%ConvertFromTypeCode
    // Convert to a Python list of KMPrinter

    if (!sipCpp)
        return PyList_New (0);

    PyObject *plist;

    // Create the list

    if ((plist = PyList_New(0)) == NULL)
        return NULL;

    // Get it.

    TQPtrList<KMPrinter> *kpList = (TQPtrList<KMPrinter> *)sipCpp;
    PyObject *inst;
    KMPrinter *p;

    for(p = kpList->first (); p; p = kpList->next ())
    {
        inst = sipConvertFromInstance (p, sipClass_KMPrinter, sipTransferObj);
        if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
        {
            Py_XDECREF (inst);
            Py_DECREF (plist);
            return NULL;
        }
    }

    return plist;
%End

%ConvertToTypeCode
    // Convert a Python list to TQPtrList<KMPrinter> on the heap.

    if (sipIsErr == NULL)
        return PyList_Check(sipPy);

    TQPtrList<KMPrinter> *kpList = new TQPtrList<KMPrinter>;

    PyObject *elem;
    KMPrinter *p;
    int iserr = 0;

    for (int i = 0; i < PyList_Size (sipPy); i++)
    {
        elem = PyList_GET_ITEM (sipPy, i);
        p = (KMPrinter *)sipForceConvertToType(elem, sipType_KMPrinter, sipTransferObj, SIP_NO_CONVERTORS, NULL, &iserr);

        if (iserr)
        {
            *sipIsErr = 1;
            delete kpList;
            return 0;
        }

        kpList->append (p);
    }

    *sipCppPtr = kpList;

    return 1;
%End
};


