X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/82e42c6b20bc9b84a6c393b8b5b62819d9538d2a..b5d81255af4c93441b5b86386dde544e2fa15e05:/lib/service/iservice.h?ds=sidebyside diff --git a/lib/service/iservice.h b/lib/service/iservice.h index eff03436..40997c02 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -39,7 +39,8 @@ public: shouldSort=8, // should be ASCII-sorted according to service_name. great for directories. hasSortKey=16, // has a sort key in data[3]. not having a sort key implies 0. sort1=32, // sort key is 1 instead of 0 - isMarker=64 // Marker + isMarker=64, // Marker + isGroup=128 // is a group of services }; int flags; // flags will NOT be compared. @@ -137,14 +138,15 @@ public: data[3]=data3; data[4]=data4; } +#endif eServiceReference(int type, int flags, const std::string &path) : type(type), flags(flags), path(path) { memset(data, 0, sizeof(data)); } -#endif eServiceReference(const std::string &string); std::string toString() const; + std::string toCompareString() const; bool operator==(const eServiceReference &c) const { if (type != c.type) @@ -183,6 +185,22 @@ SWIG_ALLOW_OUTPUT_SIMPLE(eServiceReference); extern PyObject *New_eServiceReference(const eServiceReference &ref); // defined in enigma_python.i +#ifndef SWIG +#ifdef PYTHON_REFCOUNT_DEBUG +inline ePyObject Impl_New_eServiceReference(const char* file, int line, const eServiceReference &ref) +{ + return ePyObject(New_eServiceReference(ref), file, line); +} +#define NEW_eServiceReference(ref) Impl_New_eServiceReference(__FILE__, __LINE__, ref) +#else +inline ePyObject Impl_New_eServiceReference(const eServiceReference &ref) +{ + return New_eServiceReference(ref); +} +#define NEW_eServiceReference(ref) Impl_New_eServiceReference(ref) +#endif +#endif // SWIG + typedef long long pts_t; /* the reason we have the servicereference as additional argument is @@ -221,10 +239,13 @@ public: virtual int getLength(const eServiceReference &ref); virtual SWIG_VOID(RESULT) getEvent(const eServiceReference &ref, ePtr &SWIG_OUTPUT, time_t start_time=-1); // returns true when not implemented - virtual bool isPlayable(const eServiceReference &ref, const eServiceReference &ignore); + virtual int isPlayable(const eServiceReference &ref, const eServiceReference &ignore); virtual int getInfo(const eServiceReference &ref, int w); virtual std::string getInfoString(const eServiceReference &ref,int w); + + virtual int setInfo(const eServiceReference &ref, int w, int v); + virtual int setInfoString(const eServiceReference &ref, int w, const char *v); }; TEMPLATE_TYPEDEF(ePtr, iStaticServiceInformationPtr); @@ -275,13 +296,18 @@ public: sTracknumber, sGenre, sCAIDs, - sVideoType // MPEG2 MPEG4 + sVideoType, // MPEG2 MPEG4 + + sTags, /* space seperated list of tags */ }; enum { resNA = -1, resIsString = -2, resIsPyObject = -3 }; virtual int getInfo(int w); virtual std::string getInfoString(int w); virtual PyObject *getInfoObject(int w); + + virtual int setInfo(int w, int v); + virtual int setInfoString(int w, const char *v); }; TEMPLATE_TYPEDEF(ePtr, iServiceInformationPtr); @@ -451,7 +477,7 @@ class iCueSheet: public iObject public: /* returns a list of (pts, what)-tuples */ virtual PyObject *getCutList() = 0; - virtual void setCutList(PyObject *list) = 0; + virtual void setCutList(SWIG_PYOBJECT(ePyObject) list) = 0; virtual void setCutListEnable(int enable) = 0; enum { cutIn = 0, cutOut = 1, cutMark = 2 }; }; @@ -464,9 +490,10 @@ class PyList; class iSubtitleOutput: public iObject { public: - virtual RESULT enableSubtitles(eWidget *parent, PyObject *entry)=0; + virtual RESULT enableSubtitles(eWidget *parent, SWIG_PYOBJECT(ePyObject) entry)=0; virtual RESULT disableSubtitles(eWidget *parent)=0; virtual PyObject *getSubtitleList()=0; + virtual PyObject *getCachedSubtitle()=0; }; TEMPLATE_TYPEDEF(ePtr, iSubtitleOutputPtr); @@ -502,7 +529,9 @@ public: evUpdatedRadioText }; +#ifndef SWIG virtual RESULT connectEvent(const Slot2 &event, ePtr &connection)=0; +#endif virtual RESULT start()=0; virtual RESULT stop()=0; /* might have to be changed... */ @@ -530,6 +559,31 @@ class iRecordableService: public iObject ~iRecordableService(); #endif public: + enum + { + evStart, + evStop, + evTunedIn, + evTuneFailed, + evRecordRunning, + evRecordStopped, + evNewProgramInfo, + evRecordFailed +// evDiskFull + }; + enum + { + NoError=0, + errOpenRecordFile=-1, + errNoDemuxAvailable=-2, + errNoTsRecorderAvailable=-3, + errDiskFull=-4, + errTuneFailed=-255 + }; +#ifndef SWIG + virtual RESULT connectEvent(const Slot2 &event, ePtr &connection)=0; +#endif + virtual RESULT getError(int &)=0; virtual RESULT prepare(const char *filename, time_t begTime=-1, time_t endTime=-1, int eit_event_id=-1)=0; virtual RESULT start()=0; virtual RESULT stop()=0; @@ -538,6 +592,29 @@ public: TEMPLATE_TYPEDEF(ePtr, iRecordableServicePtr); +extern PyObject *New_iRecordableServicePtr(const ePtr &ref); // defined in enigma_python.i + +inline PyObject *PyFrom(ePtr &c) +{ + return New_iRecordableServicePtr(c); +} + +#ifndef SWIG +#ifdef PYTHON_REFCOUNT_DEBUG +inline ePyObject Impl_New_iRecordableServicePtr(const char* file, int line, const ePtr &ptr) +{ + return ePyObject(New_iRecordableServicePtr(ptr), file, line); +} +#define NEW_iRecordableServicePtr(ptr) Impl_New_iRecordableServicePtr(__FILE__, __LINE__, ptr) +#else +inline ePyObject Impl_New_iRecordableServicePtr(const ePtr &ptr) +{ + return New_iRecordableServicePtr(ptr); +} +#define NEW_iRecordableServicePtr(ptr) Impl_New_iRecordableServicePtr(ptr) +#endif +#endif // SWIG + // TEMPLATE_TYPEDEF(std::list, eServiceReferenceList); class iMutableServiceList: public iObject