// This is the SIP interface definition for QPEApplication. // // Copyright (c) 2007 // Riverbank Computing Limited // // This file is part of PyQt. // // This copy of PyQt 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. // // PyQt 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 // PyQt; see the file LICENSE. If not, write to the Free Software Foundation, // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // The documentation is in the main documentation file because SIP isn't clever // enough to handle the resulting %Timeline complexity. %If (WS_QWS) class QPEApplication : QApplication { %TypeHeaderCode #include #include %End public: QPEApplication(SIP_PYLIST,Type=GuiClient) [(int &,char **,Type=GuiClient)]; %MethodCode // The Python interface is a list of argument strings that is // modified. int argc; char **argv; // Convert the list. if ((argv = pyArgvToC(a0,&argc)) == NULL) sipIsErr = 1; else { // Create it now the arguments are right. int nargc = argc; Py_BEGIN_ALLOW_THREADS sipCpp = new sipQPEApplication(nargc,argv,(QApplication::Type)a1); Py_END_ALLOW_THREADS // Now modify the original list. updatePyArgv(a0,argc,argv); } %End ~QPEApplication(); %MethodCode // See the comments in ~QApplication() to understand what's // being done here. QWidgetList *tlw = QApplication::topLevelWidgets(); QWidgetListIt it(*tlw); QWidget *w; while ((w = it.current()) != 0) { PyObject *sw; if ((sw = sipGetWrapper(w,sipClass_QWidget)) != NULL) sipTransferTo(sw,NULL); ++it; } delete tlw; %End %ConvertToSubClassCode // The table of Python class objects indexed by their names. The table // must be sorted by name. static sipStringTypeClassMap map[] = { {sipName_FileSelector, &sipClass_FileSelector}, {sipName_MenuButton, &sipClass_MenuButton}, {sipName_QPEApplication, &sipClass_QPEApplication}, {sipName_QPEMenuBar, &sipClass_QPEMenuBar}, {sipName_QPEToolBar, &sipClass_QPEToolBar}, }; sipClass = sipMapStringToClass(sipCpp -> className(),map, sizeof (map)/sizeof (map[0])); %End static QString qpeDir(); static QString documentDir(); void applyStyle(); static int defaultRotation(); static void setDefaultRotation(int); static void grabKeyboard(); static void ungrabKeyboard(); enum StylusMode { LeftOnly, RightOnHold }; static void setStylusOperation(QWidget *,StylusMode); static StylusMode stylusOperation(QWidget *); enum InputMethodHint { Normal, AlwaysOff, AlwaysOn }; enum screenSaverHint { Disable, DisableLightOff, DisableSuspend, Enable }; static void setInputMethodHint(QWidget *,InputMethodHint); static InputMethodHint inputMethodHint(QWidget *); void showMainWidget(QWidget *,bool = 0); void showMainDocumentWidget(QWidget *,bool = 0); static void setKeepRunning(); bool keepRunning() const; int exec() /PyName=exec_loop, ReleaseGIL, PreHook=__pyQtPreEventLoopHook__, PostHook=__pyQtPostEventLoopHook__/; signals: void clientMoused(); void timeChanged(); void clockChanged(bool); void volumeChanged(bool); void appMessage(const QCString &,const QByteArray &); void weekChanged(bool); void dateFormatChanged(DateFormat); void flush(); void reload(); protected: // bool qwsEventFilter(QWSEvent *); // void internalSetStyle(const QString &); void prepareForTermination(bool); virtual void restart(); virtual void shutdown(); bool eventFilter(QObject *,QEvent *); void timerEvent(QTimerEvent *); bool keyboardGrabbed() const; bool raiseAppropriateWindow(); virtual void tryQuit(); %TypeCode #include // Convert a Python argv list to a conventional C argc count and argv array. static char **pyArgvToC(PyObject *argvlist,int *argcp) { int argc; char **argv; argc = PyList_Size(argvlist); // Allocate space for two copies of the argument pointers, plus the // terminating NULL. if ((argv = (char **)sipMalloc(2 * (argc + 1) * sizeof (char *))) == NULL) return NULL; // Convert the list. for (int a = 0; a < argc; ++a) { char *arg; // Get the argument and allocate memory for it. if ((arg = PyString_AsString(PyList_GetItem(argvlist,a))) == NULL || (argv[a] = (char *)sipMalloc(strlen(arg) + 1)) == NULL) return NULL; // Copy the argument and save a pointer to it. strcpy(argv[a],arg); argv[a + argc + 1] = argv[a]; } argv[argc + argc + 1] = argv[argc] = NULL; *argcp = argc; return argv; } // Remove arguments from the Python argv list that have been removed from the // C argv array. static void updatePyArgv(PyObject *argvlist,int argc,char **argv) { for (int a = 0, na = 0; a < argc; ++a) { // See if it was removed. if (argv[na] == argv[a + argc + 1]) ++na; else PyList_SetSlice(argvlist,na,na + 1,NULL); } } %End }; %End