//
//     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.

%ModuleHeaderCode
const char **PyTQtListToArray(PyObject *);
%End


class KEditListBox : TQGroupBox
{
%TypeHeaderCode
#include <keditlistbox.h>
%End


public:

%If ( KDE_3_1_0 -  )

    class CustomEditor
    {

    public:
                             CustomEditor ();
                             CustomEditor (TQWidget*, KLineEdit*);
                             CustomEditor (KComboBox*);
        void                 setRepresentationWidget (TQWidget*);
        void                 setLineEdit (KLineEdit*);
        virtual TQWidget*     representationWidget () const;
        virtual KLineEdit*   lineEdit () const;

    protected:

    };  // class CustomEditor


public:
%End


public:

%If ( KDE_3_5_0 -  )

    enum Button
    {
        Add, 
        Remove, 
        UpDown
    };


    enum 
    {
        All
    };

%End

                         KEditListBox (TQWidget* /TransferThis/ = 0, const char* = 0, bool = 0, int = All );
                         KEditListBox (const TQString&, TQWidget* /TransferThis/ = 0, const char* = 0, bool = 0, int = All );

%If ( KDE_3_1_0 -  )
                         KEditListBox (const TQString&, const KEditListBox::CustomEditor&, TQWidget* /TransferThis/ = 0, const char* = 0, bool = 0, int = All );
%End

    TQListBox*            listBox () const;
    KLineEdit*           lineEdit () const;
    TQPushButton*         addButton () const;
    TQPushButton*         removeButton () const;
    TQPushButton*         upButton () const;
    TQPushButton*         downButton () const;
    int                  count () const;
    void                 insertStringList (const TQStringList&, int = -1);
    void                 insertStrList (const TQStrList*, int = -1);
    void                 insertStrList (const TQStrList&, int = -1);
    void                 insertStrList (SIP_PYLIST, int = -1) [void (const char**, int = -1, int = -1)];
%MethodCode
//takes list | (a Python list of strings) | index | (int)

    int n;

    if ((n = PyList_Size (a0)) == 0)
        return NULL;

    const char **strings;

    if ((strings = PyTQtListToArray(a0)) == NULL)
        return NULL;

    Py_BEGIN_ALLOW_THREADS
    sipCpp->insertStrList (strings, n, a1);
    Py_END_ALLOW_THREADS

    sipFree((void *)strings);
%End

    void                 insertItem (const TQString&, int = -1);
    void                 clear ();
    TQString              text (int) const;
    int                  currentItem () const;
    TQString              currentText () const;
    TQStringList          items () const;

%If ( KDE_3_4_0 -  )
    void                 setItems (const TQStringList&);
    int                  buttons () const;
    void                 setButtons (uint);
%End


signals:
    void                 changed ();

%If ( KDE_3_2_0 -  )
    void                 added (const TQString&);
    void                 removed (const TQString&);
%End


protected slots:
    void                 moveItemUp ();
    void                 moveItemDown ();
    void                 addItem ();
    void                 removeItem ();
    void                 enableMoveButtons (int);
    void                 typedSomething (const TQString&);

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

public:

%If (  - KDE_3_5_0 )

    enum Button
    {
        Add, 
        Remove, 
        UpDown, 
        All
    };

%End


};  // class KEditListBox



%ModuleCode
// Convert a list of strings to an array of strings on the heap.  Also used by
// TQPixmap.

const char **PyTQtListToArray(PyObject *lst)
{
	SIP_SSIZE_T nstr;
	const char **str, **sp;

	nstr = PyList_Size(lst);

	if ((str = (const char **)sipMalloc(nstr * sizeof (char *))) == NULL)
		return NULL;

	// Convert the list.

	sp = str;

	for (int i = 0; i < nstr; ++i)
	{
		PyObject *item = PyList_GetItem(lst, i);
		const char *item_ascii = sipString_AsASCIIString(&item);

		if (item_ascii == NULL)
		{
			sipFree((void *)str);
			return NULL;
		}

		*sp++ = item_ascii;
	}

	return str;
}
%End
