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


//                 Generated by preSip
//            module tdeui  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 KKeyChooser : TQWidget
{
%TypeHeaderCode
#include <kkeydialog.h>
%End


public:

    enum ActionType
    {
        Application, 
        ApplicationGlobal, 
        Standard, 
        Global
    };

                         KKeyChooser (TQWidget* /TransferThis/, KKeyChooser::ActionType = Application , bool = 1);
                         KKeyChooser (TDEActionCollection*, TQWidget* /TransferThis/, bool = 1);
                         KKeyChooser (TDEAccel*, TQWidget* /TransferThis/, bool = 1);
                         KKeyChooser (TDEGlobalAccel*, TQWidget* /TransferThis/);
                         KKeyChooser (TDEShortcutList*, TQWidget* /TransferThis/, KKeyChooser::ActionType = Application , bool = 1);
    bool                 insert (TDEActionCollection*);

%If ( KDE_3_1_0 -  )
    bool                 insert (TDEActionCollection*, const TQString&);
%End

    void                 syncToConfig (const TQString&, TDEConfigBase*, bool);
    void                 commitChanges ();
    void                 save ();

%If ( KDE_3_2_0 -  )
    static bool          checkGlobalShortcutsConflict (const TDEShortcut&, bool, TQWidget* /Transfer/);
    static bool          checkStandardShortcutsConflict (const TDEShortcut&, bool, TQWidget* /Transfer/);
%End


signals:
    void                 keyChange ();

public slots:
    void                 allDefault ();
    void                 setPreferFourModifierKeys (bool);

protected:
    void                 initGUI (KKeyChooser::ActionType, bool);
    bool                 insert (TDEAccel*);
    bool                 insert (TDEGlobalAccel*);
    bool                 insert (TDEShortcutList*);

%If ( KDE_3_1_0 -  )
    void                 buildListView (uint, const TQString& = TQString ::null );
%End

    void                 readGlobalKeys ();
    void                 updateButtons ();
    void                 fontChange (const TQFont&);
    void                 setShortcut (const TDEShortcut&);
    bool                 isKeyPresent (const TDEShortcut&, bool = 1);

%If ( KDE_3_1_0 -  )
//ig     bool                 isKeyPresentLocally (const TDEShortcut&, KKeyChooserItem*, const TQString&);
%End

    void                 _warning (const KKeySequence&, TQString, TQString);

protected slots:
    void                 slotNoKey ();
    void                 slotDefaultKey ();
    void                 slotCustomKey ();
    void                 slotListItemSelected (TQListViewItem*);
    void                 capturedShortcut (const TDEShortcut&);

%If ( KDE_3_1_0 -  )
    void                 slotSettingsChanged (int);

%If ( KDE_3_1_2 -  )
    void                 slotListItemDoubleClicked (TQListViewItem*, const TQPoint&, int);
%End

%End


protected:

public:
                         KKeyChooser (TDEAccel*, TQWidget* /TransferThis/, bool, bool, bool = 0);
                         KKeyChooser (TDEGlobalAccel*, TQWidget* /TransferThis/, bool, bool, bool = 0);

public slots:
    void                 listSync ();

protected:
//igx     virtual void         virtual_hook (int, void*);

protected:

%If (  - KDE_3_1_0 )
    void                 buildListView (uint);
%End


};  // class KKeyChooser


class KKeyDialog : KDialogBase
{
%TypeHeaderCode
#include <kkeydialog.h>
%End


public:
                         KKeyDialog (bool = 1, TQWidget* /TransferThis/ = 0, const char* = 0);
    bool                 insert (TDEActionCollection*);

%If ( KDE_3_1_0 -  )
    bool                 insert (TDEActionCollection*, const TQString&);
%End

    bool                 configure (bool = 1);
    void                 commitChanges ();
    static int           configure (TDEActionCollection*, TQWidget* /Transfer/ = 0, bool = 1);
    static int           configure (TDEAccel*, TQWidget* /Transfer/ = 0, bool = 1);
    static int           configure (TDEGlobalAccel*, TQWidget* /Transfer/ = 0, bool = 1);

%If ( KDE_3_1_0 -  )
    static int           configure (TDEActionCollection*, bool, TQWidget* /Transfer/ = 0, bool = 1);
    static int           configure (TDEAccel*, bool, TQWidget* /Transfer/ = 0, bool = 1);
    static int           configure (TDEGlobalAccel*, bool, TQWidget* /Transfer/ = 0, bool = 1);
%End

    static int           configureKeys (TDEAccel*, bool = 1, TQWidget* /Transfer/ = 0);
    static int           configureKeys (TDEGlobalAccel*, bool = 1, TQWidget* /Transfer/ = 0);
    static int           configureKeys (TDEActionCollection*, const TQString&, bool = 1, TQWidget* /Transfer/ = 0);

%If ( KDE_3_1_0 -  )

private:
                         KKeyDialog (KKeyChooser::ActionType, bool = 1, TQWidget* /TransferThis/ = 0, const char* = 0);
%End


protected:
//igx     virtual void         virtual_hook (int, void*);

};  // class KKeyDialog

typedef KKeyChooser KKeyChooser;


%MappedType IntDict
//converts a Python dict of TQString:int
{
%TypeHeaderCode
#include <tqdict.h>
typedef TQDict<int> IntDict;
%End

%ConvertFromTypeCode
// Convert to a Python dictionary

    if (!sipCpp)
    return PyDict_New();

    PyObject *dict;

    // Create the dictionary.

    if ((dict = PyDict_New()) == NULL)
        return NULL;

    // Get it.

    TQDict<int> tqdict = *sipCpp;
    TQDictIterator<int> it (tqdict);

    while (it.current ())
    {
        TQString current_key = it.currentKey ();
        PyObject *a0 = sipConvertFromInstance (&current_key, sipClass_TQCString, sipTransferObj);
        PyObject *a1 = PyLong_FromLong ((long) it.current ());

        if ((a0 == NULL) || (a1 == NULL) || (PyDict_SetItem (dict, a0, a1) < 0))
        {
            Py_XDECREF (a0);
            Py_XDECREF (a1);
            Py_DECREF (dict);
            return NULL;
        }
    }

    return dict;
%End


%ConvertToTypeCode
    // Convert a Python dictionary to a TQDict<int> on the heap.

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

    TQDict<int>* tqdict = new TQDict<int>;

    PyObject *key, *value;
    SIP_SSIZE_T pos = 0;
    TQString *a0;
    int a1;

    while (PyDict_Next(sipPy, &pos, &key, &value))
    {
        int iserr = 0, a0_state;

        a0 = (TQString *)sipForceConvertToType(key, sipType_TQString, sipTransferObj, SIP_NOT_NONE, &a0_state, &iserr);

        if ((iserr) || (!PyLong_Check (value)))
        {
            if (a0)
                sipReleaseType(a0, sipType_TQString, a0_state);

            *sipIsErr = 1;
            delete tqdict;
            return 0;
        }

        a1 = (int) PyLong_AS_LONG (value);

        tqdict->insert (*a0, &a1);

        sipReleaseType(a0, sipType_TQString, a0_state);
    }

    *sipCppPtr = tqdict;

    return 1;
%End
};


