diff options
Diffstat (limited to 'sip/tqt/tqdir.sip')
-rw-r--r-- | sip/tqt/tqdir.sip | 292 |
1 files changed, 292 insertions, 0 deletions
diff --git a/sip/tqt/tqdir.sip b/sip/tqt/tqdir.sip new file mode 100644 index 0000000..1d4c8db --- /dev/null +++ b/sip/tqt/tqdir.sip @@ -0,0 +1,292 @@ +// This is the SIP interface definition for TQDir and TQFileInfoList. +// +// Copyright (c) 2007 +// Riverbank Computing Limited <info@riverbankcomputing.co.uk> +// +// This file is part of PyTQt. +// +// This copy of PyTQt 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, or (at your option) any later +// version. +// +// PyTQt is supplied 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 +// PyTQt; see the file LICENSE. If not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +%ExportedDoc +<Sect2><Title>TQDir</Title> +<Para> +<Literal>TQDir</Literal> is fully implemented, including the Python +<Literal>len</Literal>, <Literal>[]</Literal> (for reading slices and +individual elements), <Literal>==</Literal>, <Literal>!=</Literal> and +<Literal>in</Literal> operators +</Para> +</Sect2> + +<Sect2><Title>TQFileInfoList</Title> +<Para> +This class isn't implemented. Whenever a <Literal>TQFileInfoList</Literal> is +the return type of a function or the type of an argument, a Python list of +<Literal>TQFileInfo</Literal> instances is used instead. +</Para> +</Sect2> +%End + + +%MappedType TQFileInfoList +{ +%TypeHeaderCode +#include <tqdir.h> +%End + +%ConvertFromTypeCode + PyObject *pl; + TQFileInfo *obj; + + // Convert the list. + + if ((pl = PyList_New(0)) == NULL) + return NULL; + + for (TQFileInfoListIterator it(*sipCpp); (obj = it.current()) != NULL; ++it) + { + PyObject *inst; + + if ((inst = sipConvertFromInstance(obj,sipClass_TQFileInfo,sipTransferObj)) == NULL || PyList_Append(pl,inst) < 0) + { + Py_XDECREF(inst); + Py_DECREF(pl); + + return NULL; + } + + Py_DECREF(inst); + } + + return pl; +%End + +%ConvertToTypeCode + // Convert a Python list of TQFileInfo instances to a TQFileInfoList on + // the heap. + + if (sipIsErr == NULL) + { + if (!PyList_Check(sipPy)) + return 0; + + for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i) + if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_TQFileInfo,0)) + return 0; + + return 1; + } + + TQFileInfoList *qfil = new TQFileInfoList; + + for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i) + { + TQFileInfo *qfi; + + // We apply the transfer to the list itself, not the elements. + // Note that any temporary element will never be destroyed. + // There is nothing that can be done about this. + qfi = reinterpret_cast<TQFileInfo *>(sipConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_TQFileInfo,0,0,0,sipIsErr)); + + if (*sipIsErr) + { + delete qfil; + return 0; + } + + qfil -> append(qfi); + } + + *sipCppPtr = qfil; + + return sipGetState(sipTransferObj); +%End +}; + + +class TQDir +{ +%TypeHeaderCode +#include <tqdir.h> +%End + +public: + enum FilterSpec { + Dirs, + Files, + Drives, + NoSymLinks, + All, + TypeMask, + + Readable, + Writable, + Executable, + RWEMask, + + Modified, + Hidden, + System, + AccessMask, + + DefaultFilter + }; + + enum SortSpec { + Name, + Time, + Size, + Unsorted, + SortByMask, + + DirsFirst, + Reversed, + IgnoreCase, + DefaultSort + }; + + TQDir(); + TQDir(const TQString &,const TQString & = TQString::null, + int = Name | IgnoreCase,int = All); + TQDir(const TQDir &); + + virtual void setPath(const TQString &); + virtual TQString path() const; + virtual TQString absPath() const; + virtual TQString canonicalPath() const; + + virtual TQString dirName() const; + virtual TQString filePath(const TQString &,bool = 1) const; + virtual TQString absFilePath(const TQString &,bool = 1) const; + + static TQString convertSeparators(const TQString &); + + virtual bool cd(const TQString &,bool = 1); + virtual bool cdUp(); + + TQString nameFilter() const; + virtual void setNameFilter(const TQString &); + FilterSpec filter() const; + virtual void setFilter(int); + SortSpec sorting() const; + virtual void setSorting(int); + + bool matchAllDirs() const; + virtual void setMatchAllDirs(bool); + + uint count() const; + + int __len__() const; +%MethodCode + Py_BEGIN_ALLOW_THREADS + sipRes = sipCpp -> count(); + Py_END_ALLOW_THREADS +%End + + TQString operator[](int) const; +%MethodCode + int len; + + Py_BEGIN_ALLOW_THREADS + len = sipCpp -> count(); + Py_END_ALLOW_THREADS + + if ((a0 = (int)sipConvertFromSequenceIndex(a0,len)) < 0) + sipIsErr = 1; + else + { + Py_BEGIN_ALLOW_THREADS + sipRes = new TQString((*sipCpp)[a0]); + Py_END_ALLOW_THREADS + } +%End + + TQStringList operator[](SIP_PYSLICE) const; +%MethodCode + Py_ssize_t len, start, stop, step, slicelength, i; + + Py_BEGIN_ALLOW_THREADS + len = sipCpp -> count(); + Py_END_ALLOW_THREADS + + if (sipConvertFromSliceObject(a0,len,&start,&stop,&step,&slicelength) < 0) + sipIsErr = 1; + else + { + Py_BEGIN_ALLOW_THREADS + sipRes = new TQStringList(); + + for (i = 0; i < slicelength; ++i) + { + (*sipRes) += (*sipCpp)[start]; + start += step; + } + Py_END_ALLOW_THREADS + } +%End + + int __contains__(const TQString &) const; +%MethodCode + Py_BEGIN_ALLOW_THREADS + sipRes = (sipCpp -> entryList().findIndex(*a0) >= 0); + Py_END_ALLOW_THREADS +%End + + virtual TQStrList encodedEntryList(int = DefaultFilter, + int = DefaultSort) const; + virtual TQStrList encodedEntryList(const TQString &,int = DefaultFilter, + int = DefaultSort) const; + virtual TQStringList entryList(int = DefaultFilter, + int = DefaultSort) const; + virtual TQStringList entryList(const TQString &,int = DefaultFilter, + int = DefaultSort) const; + virtual const TQFileInfoList *entryInfoList(int = DefaultFilter, + int = DefaultSort) const; + virtual const TQFileInfoList *entryInfoList(const TQString &, + int = DefaultFilter, + int = DefaultSort) const; + + static const TQFileInfoList *drives(); + + virtual bool mkdir(const TQString &,bool = 1) const; + virtual bool rmdir(const TQString &,bool = 1) const; + + virtual bool isReadable() const; + virtual bool exists() const; + virtual bool isRoot() const; + + virtual bool isRelative() const; + virtual void convertToAbs(); + + virtual bool remove(const TQString &,bool = 1); + virtual bool rename(const TQString &,const TQString &,bool = 1); + virtual bool exists(const TQString &,bool = 1); + + static char separator(); + + static bool setCurrent(const TQString &); + static TQDir current(); + static TQDir home(); + static TQDir root(); + static TQString currentDirPath(); + static TQString homeDirPath(); + static TQString rootDirPath(); + + static bool match(const TQStringList &,const TQString &); + static bool match(const TQString &,const TQString &); + static TQString cleanDirPath(const TQString &); + static bool isRelativePath(const TQString &); + void refresh() const; +}; |